HDU_1013 Digital Roots

  今天有点郁闷,想刷两道水题解解闷的,结果找上了这道题,结果。。。。WA了n次,刚开始没考虑到大数,直接写了个整数的递归交上去了,然后WA就下来了!!后来看到discuss里有人说用字符串写,结果整了半天就是WA,没办法,找来别人的代码一看,我晕!以0结束,我直接没判断。。。。悲剧的一天啊~~~

  不说了, 看代码:

#include <stdio.h>
#include
<string.h>
int root(int x)
{
int sum = 0;
while(x)
{
sum
+= x%10; x /= 10;
}
if(sum < 10) return sum;
else return root(sum);
}
int main()
{
int x, i;
char s[1001];
while(scanf("%s",s) != EOF)
{
if(!strcmp(s, "0")) break;
for(i = 0, x = 0; s[i] != '\0'; i++)
x
+= s[i] - '0';
printf(
"%d\n", root(x));
}
return 0;
}
posted @ 2011-08-03 20:13  AC_Von  阅读(193)  评论(0编辑  收藏  举报