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
Credits:
Special thanks
to @mithmatt
and @ts
for adding this problem
and creating all test cases.
使用set即可,注意这道题最终输出要么是因为1结束,要么是由于出现环路结束。注意set返回的是pair,所以要判断set的第二个元素。
class Solution {
public:
bool isHappy(
int n) {
if(n <=
0)
return 0;
set<int> s;
while((s.insert(n)).second){
int b =
0;
while(n !=
0){
int a = n %
10;
b += a * a;
n /=
10;
}
if(b ==
1)
return true;
else
n = b;
}
return false;
}
};
转载请注明原文地址: https://ju.6miu.com/read-36166.html