您的位置:首页 > 其它

Num 14: HDOJ: 题目1013 : Digital Roots

2015-07-26 13:20 239 查看
原题链接

水题,但是一开始的时候没想到是有关大数的问题;

结果一直在按 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: