题解 | 快乐数
快乐数
https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param n int整型
* @return bool布尔型
*/
bool happynum(int n) {
if (n == 1) return true;
if (n == 1000000000) return true;
set<int>sq = {0,1,4,9,16,25,36,49,64,81};
vector<int>can_happy = {1,100,68,86,82,28,19,91,10,109,103,130,13,31};
// 先计算4次,将数字映射到1~162
int t = n,sum= 0;
for (int i = 0;i < 4;i++)
{
while (t)
{
sum+=(t%10)*(t%10);
t/=10;
}
t = sum;
sum =0;
}
//
if (find(can_happy.begin(),can_happy.end(),t) != can_happy.end())
return true;
else return false;
}
};
