http://acm.hdu.edu.cn/showproblem.php?pid=1013
只有0-9的结果 很容易让人往规律题目上面去想
关键是如何去找规律 我一开始没有找对 一个劲的错
参考了别人代码过了
ans=0 1 2 3 4 5 6 7 8 9 10 11 12 13 ......... 100 101 102 103 ....
roots=0 1 2 3 4 5 6 7 8 9 1 2 3 4 .......1 2 3 4....
原来是以1.....9为循环节的。想想也是,每次增加1,那么层层迭代下来,最终当ans<10的时候也是每次增加了1。如此,可以归纳出
roots=(ans-1)%9+1
#include<stdio.h>
#include<string.h>int main()
{
int sum,n,num,ans,i,d;
char s[1000];
while(scanf("%s",s)!=EOF)
{
d=strlen(s);
/* for(i=0;i<d;)///操 这里 亚 搞错了 干吗i++ 那样不是加了2次吗
if(s[i]=='0') i++;
else break;
if(i==d) break;*/
ans=0;
if(d==1&&s[0]=='0') break;
if(d==1&&s[0]<'10') {printf("%c\n",s[0]);continue;}
for(i=0;i<d;i++)
ans=ans+s[i]-'0';
printf("%d\n",(ans-1)%9+1);
}
return 0;
}