杭电1002题
Problem Description
I have a very simple problem for you. Given two integers A and B, your job is to calculate the Sum of A + B.
Input
The first line of the input contains an integer T(1<=T<=20) which means the number of test cases. Then T lines follow, each line consists of two positive integers, A and B. Notice that the integers are very large, that means you should not process them by using 32-bit integer. You may assume the length of each integer will not exceed 1000.
Output
For each test case, you should output two lines. The first line is "Case #:", # means the number of the test case. The second line is the an equation "A + B = Sum", Sum means the result of A + B. Note there are some spaces int the equation. Output a blank line between two test cases.
Sample Input
2
1 2
112233445566778899 998877665544332211
Sample Output
Case 1:
1 + 2 = 3
Case 2:
112233445566778899 + 998877665544332211 = 1111111111111111110
这个是我的程序代码
#include <stdio.h>
#include <string.h>
int main ()
{
char a[21][1001],b[21][1001];
int c[21][2001]={{0}};
int k[21]={0};
int n,i,p,q,t,m;
scanf ("%d",&n);
for (i=1;i<=n;i++)
{
scanf ("%s %s",a[i],b[i]);
p=strlen(a[i])-1;
q=strlen(b[i])-1;
while ((p>=0)&&(q>=0))
{
if(((a[i][p]-‘0‘)+(b[i][q]-‘0‘)+c[i][k[i]])>=10)
{
c[i][k[i]]=(a[i][p]-‘0‘)+(b[i][q]-‘0‘)+c[i][k[i]]-10;
c[i][k[i]+1]++;
}
else
c[i][k[i]]=a[i][p]-‘0‘+b[i][q]-‘0‘+c[i][k[i]];
k[i]++;
p--;
q--;
}
if (p>=0)
{
for (t=p;t>=0;t--)
{
c[i][k[i]]=(a[i][t]-‘0‘)+c[i][k[i]];
k[i]++;
}
}
else if (q>=0)
{
for (t=q;t>=0;t--)
{
c[i][k[i]]=(b[i][t]-‘0‘)+c[i][k[i]];
k[i]++;
}
}
if (c[i][k[i]]!=0)
k[i]++;
}
for (i=1;i<=n;i++)
{
printf ("Case %d:\n",i);
printf ("%s + %s = ",a[i],b[i]);
for (m=k[i]-1;m>=0;m--)
printf("%d",c[i][m]);
if(i<n)
printf ("\n\n");
}
return 0;
}