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]);}}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值