题目:
写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。
样例:
19 就是一个快乐数。
$1^2 + 9^2 = 82$
$8^2 + 2^2 = 68$
$6^2 + 8^2 = 100$
$1^2 + 0^2 + 0^2 = 1$$
思路:
非happy number在[2,6]这个区间
参考答案:
class Solution {
public:
/*
* @param n: An integer
* @return: true if this is a happy number or false
*/
bool isHappy(int n) {
// write your code here
/* if(n < 0) return false;
if(n == 1) return true;
set<int> temp;
temp.insert(n);
int sum;
while(true){
sum = 0;
while(n){
sum += (n%10)*(n%10);
n /= 10;
}
if(sum == 1){
return true;
}
if(temp.find(sum) != temp.end()){
return false;
}
n = sum;
temp.insert(n);
}
}*/
while(n > 6){
int sum = 0;
while(n){
sum += (n%10) * (n%10);
n /= 10;
}
n = sum;
}
if(n == 1){
return true;
}
else return false;
}
};
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。