A + B Problem II
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 100391 Accepted Submission(s): 19038
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<iostream> #include<string.h> #include<stdio.h> using namespace std; char a[1000+10]; char b[1000+10]; int convert(char *p) { int len=strlen(p); int j=len-1; int i=0; while(i<j) { char temp=p[i]; p[i]=p[j]; p[j]=temp; i++;j--; } return len; } void cal(char *p,char *q,int lena,int lenb) { int lenc=max(lenb,lena); if(lena<=lenb) { for(int i=lena;i<=lenb;i++) { p[i]=q[i]; } for(int i=0;i<lena;i++) { p[i]+=q[i]-'0'; } } else { for(int i=0;i<lenb;i++) { p[i]+=q[i]-'0'; } } for(int i=0;i<lenc-1;i++) { p[i+1]+=(p[i]-'0')/10; p[i]=(p[i]-'0')%10+'0'; } cout<<int(p[lenc-1]-'0'); for(int i=lenc-2;i>=0;i--) { cout<<p[i]; } cout<<endl; } int main() { int n; cin>>n; for(int i=1;i<=n;i++) { memset(a,'0',sizeof(a)); memset(b,'0',sizeof(b)); scanf("%s%s",a,b); printf("Case %d:\n",i); cout<<a<<" + "<<b<<" = "; int lena=convert(a); int lenb=convert(b); cal(a,b,lena,lenb); if(i!=n)cout<<endl; } return 0; }