快乐数
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
快乐数
题目背景
快乐数是一个经典的数学问题,其定义基于数字各位平方和的迭代运算。通过判断迭代过程是否最终收敛到 1,我们可以确定一个正整数是否为快乐数。
题目描述
对于一个正整数,我们定义如下迭代操作:
- 将该数的每一位数字分别平方后求和,得到一个新的正整数。
- 对新得到的正整数重复执行上述操作。
如果经过若干次迭代后,结果变为 1,则称原数为快乐数;如果迭代过程进入无限循环且始终无法得到 1,则原数不是快乐数。
现在给定一个正整数 ,请你编写程序判断它是否为快乐数。
输入格式
一行一个正整数 。
输出格式
如果 是快乐数,输出一行 true;否则输出一行 false。
样例 #1
样例输入 #1
19
样例输出 #1
true
样例 #2
样例输入 #2
2
样例输出 #2
false
提示
样例解释 #1
对于输入 ,迭代过程如下:
经过 4 次迭代后结果变为 1,因此 19 是快乐数。
数据范围与约定
- 对于 的数据,保证 。
算法提示
- 方法一:使用哈希集合记录已经出现过的数字,若某个数字重复出现则说明进入了循环。
- 方法二:使用快慢指针法(Floyd 判圈算法)来检测循环,该方法不需要额外的空间。