http://acm.hdu.edu.cn/showproblem.php?pid=1013
题意 : 给你一个数把它的每位数都加起来,如果和不是1位数,就继续把和的每一位数加起来,直到加到一位数为止 。
思路 :这个题我一开始想的很简单,虽然它本身就是很简单的,因为题目中并没有给出n的大小,所以我没有在意,结果肯定就是WA,还有,其实这个题是有规律,有兴趣的可以写写看,当n等于0,1,2,3,4,5,6,7,8,9,10,11..................100,101,102,103时,root等于0,1,2,3,4,5,6,7,8,9,1,2................1,2,3,4。所以其实就是以9为循环结的,所以这样题就简单了很多,找到规律的时候,因为没有注意数组的大小,所以悲剧了。。。。。
#include<stdio.h> #include<string.h> int main() { char ch[1003] ; while(~scanf("%s",ch)) { if(ch[0] == '0') break ; int sum = 0 ; if(strlen(ch) == 1) printf("%s ",ch) ; else { for(int i = 0 ; i < strlen(ch) ; i++) sum += (ch[i]-'0') ; printf("%d ",(sum-1)%9+1) ; } } return 0 ; }