这道题竟然让我WA了好几次,shame。。。原因是没注意输出,没有注意当结果是0的情况。
原来我的输出是这样的
for(i=0;i<MAXLEN;i++)
if(num[i])
break;
for(;i<MAXLEN;i++)
printf("%d",num[i]);
这是不对的。。。
下面是AC code
/*
* HDU-1047 integer inquiry
* mike-w
* 2011-10-22
* --------------------
* 高精度加法, water~
*/
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define MAXLEN 120
int ncase;
int num[MAXLEN];
char buf[MAXLEN];
int main(void)
{
int ccase,i,len;
#ifndef ONLINE_JUDGE
freopen("t.in","r",stdin);
#endif
scanf("%d",&ncase);
for(ccase=1;ccase<=ncase;ccase++)
{
memset(num,0,sizeof(num));
while(scanf("%s",buf),buf[1]!='\0'||buf[0]!='0')
{
len=strlen(buf);
for(i=1;i<=len;i++)
{
num[MAXLEN-i]+=buf[len-i]-'0';
if(num[MAXLEN-i]>=10)
{
num[MAXLEN-i-1]+=num[MAXLEN-i]/10;
num[MAXLEN-i]%=10;
}
}
}
for(i=0;i<MAXLEN;i++)
if(num[i])
break;
if(ccase>1) putchar('\n');
for(;i<MAXLEN-1;i++)
printf("%d",num[i]);
printf("%d",num[MAXLEN-1]);
putchar('\n');
}
return 0;
}