题目:
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
题目解答:不断计算num各位数字的平方和,直到进入循环或最终结果为1,并返回对应的结果。
代码如下:
class Solution {
public:
bool isHappy(int n) {
if(n <= 0)
return false;
unordered_set<int> num_set;
while((n != 1) && (num_set.find(n) == num_set.end() ) )
{
num_set.insert(n);
n = getSum(n);
}
if(n == 1)
{
return true;
}
else
return false;
}
int getSum(int n)
{
int sum = pow((n % 10),2) ;
while(n / 10 != 0)
{
n = n / 10;
int tmp = pow((n % 10),2);
sum += tmp;
}
return sum;
}
};
原文:http://www.cnblogs.com/CodingGirl121/p/5425031.html