10591 - Happy Number
来源:互联网 发布:消除人声的软件 编辑:程序博客网 时间:2024/06/17 19:31
/*简单题题意:S0每位数字的平方之和为S1,一次推理,如果出现Si=1,输出p1。不出现,输出p2。思路:第一次做的时候超时,没计算出一个新的temp需要与前面的所有数字进行一次判断使用hash做记录*/#include <cstdio>#include <cstring>int hash[10000];bool check(int k,int n){int temp=0;while(k!=0){int a=k%10;temp+=a*a;k/=10;}if(temp==1)return true;else if(!hash[temp]){hash[temp]=1;return check(temp,n);}elsereturn false;}int main(){//freopen("data.in","r",stdin);int T;int cas=1;scanf("%d",&T);while(T--){memset(hash,0,sizeof(hash));int n;scanf("%d",&n);if(check(n,n))printf("Case #%d: %d is a Happy number.\n",cas,n);elseprintf("Case #%d: %d is an Unhappy number.\n",cas,n);cas++;}return 0;}