不是快乐数的数称为不快乐数(unhappy number)
这个题首先要知道,所有不快乐数的数位平方和计算, 最後都会进入:
4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4
的循环中。
在十进位下,个位数的快乐数只有1和7.
(100以内的快乐数有 :1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100。)
这里我们简单判断一下十以内的即可(个位数是不是1或7)。
所以只需要写一个专门用来做转换过程的函数, 然后循环去转换,直到这个数是个位数的时候,判断是不是1或7就行了。
c++实现
class Solution {
public:
int happy(int t){
int res=0;
while(t){
res += (t%10)*(t%10);
t /= 10;
}
return res;
}
bool happynum(int n) {
// write code here
while(n>9){
n = happy(n);
}
return n==1;
}
};
python实现
class Solution:
def happy(self, t: int):
res = 0
while t:
res += ((t%10) * (t%10))
t //= 10
return res
def happynum(self , n: int) -> bool:
# write code here
while n>9:
n = self.happy(n)
return n==1 or n==7