A+B Problem II(大数相加问题)

来源:互联网 发布:矩阵的奇异值和特征值 编辑:程序博客网 时间:2024/05/18 01:18

A + B Problem II

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 139946    Accepted Submission(s): 26530


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
 这道题目是大数加法和普通加法的混合。实际上没有什么难度,只是注意格式的输入和输出。像这样的英语题目总会在英语中设置陷阱,如空行,符号之间的空格。当然了,像判断空行是不是要空,有时要用bool型来判断,有时直接可以用if语句来控制。这道题目就可以直接用if来控制。
 
#include<iostream>#include<string>using namespace std;int max(int a,int b){int t;if(a>b)t=a;elset=b;return t;}int main(){int e,p;cin>>e;char m[1005];char n[1005];int a[1005];int b[1005];for(p=1;p<=e;p++){cin>>m>>n;int i,t,x,y,len,j=0,q;for(t=0;t<1005;t++){a[t]=0;b[t]=0;}x=strlen(n);y=strlen(m);for(i=x-1;i>=0;i--)a[j++]=n[i]-'0';j=0;for(i=y-1;i>=0;i--)b[j++]=m[i]-'0';len=max(x,y);for(i=0;i<len;i++){a[i]+=b[i];a[i+1]+=a[i]/10;a[i]%=10;}for(i=1004;i>=0;i--){if(a[i]!=0){q=i;break;}}cout<<"Case "<<p<<":"<<endl;cout<<m<<"+"<<n<<"=";for(i=q;i>=0;i--)cout<<a[i];cout<<endl;}return 0;}

原创粉丝点击