202. Happy Number
Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of
the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which
does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
- 12 + 92 = 82
- 82 + 22 = 68
- 62 + 82 = 100
- 12 + 02 + 02 = 1
思路:如果是快乐数,最终肯定会等于1;否则,则会陷入
4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中,我就比较懒一点,
不去记录出现的每一个数判断是否陷入环,而直接从这个循环里随便挑一个数作为return false的判断条件。最后递归一下就ac了。
#include<cstdio>
using namespace std;
/****************************提交部分*******************************/
class Solution
{
public:
bool isHappy(int n)
{
int tmp=0;
while(n)
{
tmp+=(n%10)*(n%10);
n/=10;
}
if(tmp==1)
return true;
else if(tmp==4)
return false;
else
return isHappy(tmp);
}
};
/*********************************************************************/
int main()
{
int n;
while(scanf("%d",&n)==1)
{
Solution s;
bool ans=s.isHappy(n);
if(ans)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}
PS一下,我一开始只是写了else isHappy(tmp); 没有加return,结果一直compile error。。。虽说其实一样,但还是要注意。