在未来等你的专栏

Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other)Total Submission(s):4539 Accepted Submission(s):796

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

Author

Ignatius.L

分析:这是一道大数相加的问题,,唯一注意的是输出的格式

#include<iostream>#include<stdio.h>#include<string.h>using namespace std;int main(){int test;char a[1001],b[1001];int sum[1001];cin>>test;int t1=1;while(test–){memset(sum,0,sizeof(sum));cin>>a; cin>>b;int lena=strlen(a)-1;int lenb=strlen(b)-1;for(int t=1000,i=lena;i>=0;i–)sum[t–]+=(a[i]-'0');for(int t=1000,j=lenb;j>=0;j–)sum[t–]+=(b[j]-'0');for(int k=1000;k>=1;k–) //控制进位问题{sum[k-1]+=sum[k]/10;sum[k]=sum[k]%10;}printf("Case %d:\n",t1++);printf("%s + %s = ",a,b);int start=0;while(start<=1000&&!sum[start]) //去掉前导0start++;for(int k=start;k<=1000;k++)printf("%d",sum[k]);printf("\n");if(test)//格式控制cout<<endl;}return 0;}

做对的事情比把事情做对重要。

在未来等你的专栏

相关文章:

你感兴趣的文章:

标签云: