本题链接:http://acm.hdu.edu.cn/showproblem.php?pid=1002
本题主要是运用大数算法,即采用数组来模拟,AC代码:
#include<stdio.h>
#include<string.h>
#define MAX_LEN 1000
char line1[MAX_LEN+10];
char line2[MAX_LEN+10];
int an1[MAX_LEN+10];
int an2[MAX_LEN+10];
int main()
{
int n,i,j,len1,len2,t=1;
scanf("%d",&n);
while(n--)
{
scanf("%s%s",line1,line2);
memset( an1, 0, sizeof(an1));
memset( an2, 0, sizeof(an2));
len1=strlen(line1);
len2=strlen(line2);
for(j=0,i=len1-1;i>=0;i--,j++)
an1[j]=line1[i]-'0';
for(j=0,i=len2-1;i>=0;i--,j++)
an2[j]=line2[i]-'0';
if(len1<len2) len1=len2;
for(i=0;i<=len1;i++)
{
an1[i]+=an2[i]; //把对应数单个相加,结果放到an1中
if(an1[i]>=10)
{
an1[i+1]++;
an1[i]-=10;
}
}
printf("Case %d:\n",t++);
printf("%s + %s = ",line1,line2);
for(i=MAX_LEN;(i>=0)&&(an1[i]==0);i--) ;
if(i>=0)
{
for(;i>=0;i--)
printf("%d",an1[i]);
}
printf("\n");
if(n!=0)
printf("\n");
}
return 0;
}