HDU1163 Eddy's digital Roots

 HDU1163   Eddy's digital Roots

题意描述:输入数据n(0~10000之间),要求输出n^n的各位数字之和的各位数字之和的各位数字之和......一直求到所得结果为个位数为止。

方法一:先考虑两位数ab*ab=(a*10+b)*(a*10+b)=a*a*100+2*a*b*10+b*b,其各位数字之和等于a*a+2*a*b+b*b各位数字之和=(a+b)*(a+b),若a+b还是二位数,则继续按二位数分解下去,直到所得结果为个位数为止。同理三位数abc*abc=(a+b+c)*(a+b+c),四位数,五位数等等同样成立。

方法二:找是否有规律,比如说:周期。此题周期为18,大家可以去验证。

【code 1】

main(i,n,m){while(scanf("%d",&n)&&n){m=1;for(i=0;i<n;i++){m=m*n;m=m%9==0?9:m%9;}printf("%d/n",m);}}

【code 2】

main(n){char s[20]="0149429719159479789";while(scanf("%d",&n)&&n){printf("%c/n",s[n%18==0?18:n%18]);}}

你可能感兴趣的:(c,ini)