水题,但是一开始的时候没想到是有关大数的问题;
结果一直在按 int 型去做,一直WA… ;
一开始的错误代码:
#include<stdio.h>
int main()
{
int num[2000],numb;
while(scanf("%d",&numb)!=EOF&&numb)
{
while(1)
{
int i,j,root=0;
for(i=0; numb!=0; i++)
{
num[i]=numb%10;
numb/=10;
}
for(j=0; j<i; j++)
{
root+=num[j];
}
if(root>=0&&root<=9)
{
printf("%d\n",root);break;
}
else numb=root;
}
}
return 0;
}
因为example的误导,让我以为用不到大数问题;
AC代码:
#include<stdio.h>
#include<string.h>
int main()
{
int a,root,k,i;
char s[10000];
while(scanf("%s",&s))
{
root=0;
a=0;
k=strlen(s);
if(s[0]=='0') break;
for(i=0;i<k;i++) a+=s[i]-'0';
while(a||root>=10)
{
if(a)
{
root+=a%10;
a/=10;
}
else
a=root,root=0;
}
printf("%d\n",root);
}
return 0;
}