UVA - 10591 Happy Number

来源:互联网 发布:shadowrocket linux 编辑:程序博客网 时间:2024/05/17 06:50

题目大意:给出一个数字,把他各个数位平方,然后相加,直到重复或者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;}


0 0