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\n",ch) ;
        else
        {
            for(int i = 0 ; i < strlen(ch) ; i++)
            sum += (ch[i]-'0') ;
            printf("%d\n",(sum-1)%9+1) ;
        }
        
    }
    return 0 ;
}
View Code

 

posted on 2013-11-16 14:02  枫、  阅读(158)  评论(0编辑  收藏  举报