杭电acm 1013问题,总是WA,帮忙看下啊

http://acm.hdu.edu.cn/showproblem.php?pid=1013我的代码是#include<stdio.h>#defineLEN3000int... http://acm.hdu.edu.cn/showproblem.php?pid=1013

我的代码是

#include<stdio.h>
#define LEN 3000
int main (void)
{
char a[LEN],i,flag;
__int64 sum,j;
while(scanf("%s",a)!=EOF)
{
flag=0;
for(i=0;a[i]!='\0';i++)
if(a[i]!='0')
flag=1;
if(!flag)
return 0;
sum=0;
getchar();
for(i=0;a[i]!='\0';i++)
sum+=a[i]-'0';
while(sum/10)
{
j=sum;
sum=0;
while(j/10){
sum+=(j%10);
j/=10;}
sum+=j;
}
printf("%I64d\n",sum);
}
return 0;
}
我已经用了很大的字符数组来接收,怎么还是不能过。。。
展开
 我来答
qfyh05
2011-10-24 · TA获得超过507个赞
知道小有建树答主
回答量:325
采纳率:50%
帮助的人:358万
展开全部
嗯嗯,你考虑过了,但是你还没考虑到如果该数的第一次求和就超出了sum的__int64的范围,结果当然不对啊。既然都用字符串了,为啥你不用字符串到最后呢?
更多追问追答
追问
....不会吧,求和就超int64,那要多大啊.....
追答
不对,呵呵,你等等,我看看哈,不是大小问题。你这个大小可以了的。
来自:求助得到的回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式