problemcutter

导航

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编辑  收藏  举报