AC代码
/*以十进位为例:2 8 → 22+82=68 → 62+82=100 → 12+02+02=13 2 → 32+22=13 → 12+32=10 → 12+02=13 7 → 32+72=58 → 52+82=89 → 82+92=145 → 12+42+52=42 → 42+22=20 → 22+02=4 → 42=16 → 12+62=37……因此28和32是快乐数,而在37的计算过程中,37重覆出现,继续计算的结果只会是上述数字的循环,不会出现1,因此37不是快乐数。不是快乐数的数称为不快乐数(unhappy number),所有不快乐数的数位平方和计算,最後都会进入 4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。在十进位下,100以内的快乐数有(OEIS中的数列A00770) :1, 7, 10, 13, 19, 23, 28, 31, 32, 44, 49, 68, 70, 79, 82, 86, 91, 94, 97, 100。*/#include<stdio.h>#include<iostream>#include<algorithm>#include<string.h>using namespace std;int main(){ long long num; while(~scanf("%lld",&num)) { long long sum=0; while(num!=1) { while(num!=0) { sum=sum+(num%10)*(num%10); num=num/10; } num=sum; sum=0; if(num==4||num==16||num==37||num==58||num==89||num==145||num==42||num==20) { PRintf("NO/n"); break; } else if(num==1) { printf("YES/n"); break; } } } return 0;}新闻热点
疑难解答