ps:
n=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=(n-1)%9+1
//注意输入的数字很大需要字符串读入,求和得n: #include<stdio.h> #include<string.h> #include<math.h> int main() { int i,n; char a[1003]; while (scanf("%s",&a)&&a[0]!='0') { n=0; for (i=0;a[i];i++) { n+=a[i]-48; } printf("%d\n",(n-1)%9+1); } return 0; }