题目大意:给出一个数字,把他各个数位平方,然后相加,直到重复或者1,如果最后出现了1,那么这个数就是快乐数
解题思路:set
#include<cstdio>
#include<set>
using namespace std;
int main() {
int test;
long long num;
scanf("%d",&test);
for(int i = 1; i <= test; i++) {
printf("Case #%d: ",i);
set<long long>s;
scanf("%lld",&num);
long long t = num;
s.insert(num);
while(1) {
long long temp;
long long num2 = 0;
for(;;) {
temp = t % 10;
num2 = num2 + temp * temp;
t = t / 10;
if(t == 0)
break;
}
if(num2 == 1) {
printf("%lld is a Happy number.\n",num);
break;
}
if(s.count(num2)) {
printf("%lld is an Unhappy number.\n",num);
break;
}
t = num2;
s.insert(t);
}
}
return 0;
}