SPOJ Problem 7733:Happy Numbers I
找循环节。。或者可以知道最后肯定会到1位数,可以手动求十以内的
#include<cstdio> #include<cstring> int n; int dt(int s,int t){ int r=s,p; if(s<10&&(s!=1&&s!=7))return -1; if (s==1)return t; p=0; while(r){ p+=(r%10)*(r%10); r/=10; } dt(p,t+1); } int main(){ scanf("%d",&n); printf("%d",dt(n,0)); }
posted on 2015-03-15 14:55 problemcutter 阅读(114) 评论(0) 编辑 收藏 举报