A + B Problem II

来源:互联网 发布:康熙王朝 雍正王朝知乎 编辑:程序博客网 时间:2024/05/22 07:51

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 256935    Accepted Submission(s): 49653


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
21 2112233445566778899 998877665544332211
 

Sample Output
Case 1:1 + 2 = 3Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110


#include<stdio.h>

#include<string.h>
int main()
{
char a[1000],b[1000],c[1003];
int i,j=1,p,n,n1,n2;
scanf("%d",&n);
    while(n)
{
scanf("%s %s",a,b);
n1=strlen(a)-1;
n2=strlen(b)-1;
for(i=0;n1>=0||n2>=0;i++,n1--,n2--)
{
p=0; 
if(n1>=0&&n2>=0)
c[i]=a[n1]+b[n2]-'0'+p;
if(n1>=0&&n2<0)
c[i]=a[n1]+p;
if(n1<0&&n2>=0)
c[i]=b[n2]+p;
if(c[i]>'9')
{
c[i]=c[i]-10;
p=1;
}
}
if(p==1)printf("%d",p);
printf("Case %d:\n",j);
printf("%s + %s = ",a,b);
while(i--)
printf("%c",c[i]);
j++;
if(n!=1)
printf("\n\n");
else 
printf("\n");
n--;
}
return 0;

}


新学的一种方法

#include<stdio.h>#include<string.h>int main(){    char x[1000],s[1000];    int i,j,k,n,m,max,c,d;    scanf("%d",&c);    d=c;    k=1;    while(c--)    {        scanf("%s%s",x,s);        //memset( a, 0, sizeof(a));        //memset( b, 0, sizeof(b));       int a[1050]={0},b[1050]={0};        n=strlen(x);        m=strlen(s);        for(i=n-1,j=0;i>=0;i--)        a[j++]=x[i]-'0';        for(i=m-1,j=0;i>=0;i--)        b[j++]=s[i]-'0';        if(n>m)        max=n;        else max=m;        for(i=0;i<max;i++)        {           a[i]+=b[i];           if(a[i]>=10)           {               a[i]=a[i]-10;               a[i+1]++;           }         }        printf("Case %d:\n",k);         printf("%s + %s = ",x,s);         for(i=max;(i>=0)&&a[i]==0;i--)         ;                           if(i>=0)             for(;i>=0;i--)             printf("%d",a[i]);             else printf("0");             printf("\n");             if(k<d)             printf("\n");         k++;     }     return 0;}

0 0
原创粉丝点击