您的位置:首页 > 其它

HDU 1002 A+B(大数)

2009-08-07 13:10 288 查看
http://acm.hdu.edu.cn/showproblem.php?pid=1002

解题思路:没什么特殊思路,就是大数相加,用数组做。

#include <stdio.h>
#include <string.h>
#define Size 1001
char a[Size];
char b[Size];
int res[Size];

int main()
{
int NumOfTest;
int alen,blen,i,reslen,len,j;
int count;
int up;
while (scanf("%d",&NumOfTest)!=EOF)
{
count=1;
for (i=0;i<NumOfTest;i++)
{
memset(res,0,sizeof(res));
scanf("%s%s",a,b);
up = 0;
alen = strlen(a);
blen = strlen(b);
reslen = 0;
len = (alen>blen?alen:blen)+1;
alen-=1;
blen-=1;
while (len--)
{
if(alen!=-1&&blen!=-1)
{
res[reslen] = a[alen]-'0'+b[blen]-'0'+up;
alen--;blen--;reslen++;
}
else if(alen==-1&&blen!=-1)
{
res[reslen] = b[blen]-'0'+up;
reslen++;blen--;
}
else if(alen!=-1&&blen==-1)
{
res[reslen] = a[alen]-'0'+up;
reslen++;alen--;
}
if (res[reslen-1]>9)
{
res[reslen-1]=res[reslen-1]%10;
up=1;
}
else
up = 0;
if (alen==-1&&blen==-1&&up == 1)
{
res[reslen] = 1;
up=0;
reslen++;
break;
}
}
printf("Case %d:/n",count);
printf("%s + %s = ",a,b);
if(res[reslen-1]!=0)
printf("%d",res[reslen-1]);
for(j=reslen-2;j>=0;j--)
printf("%d",res[j]);
if (i!=NumOfTest-1)
printf("/n");
printf("/n");
count++;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: