题目描述
谷学长有一个非常简单的问题给你,给你两个整数A和B,你的任务是计算A+B。
输入
输入的第一行包含一个整数T(T<=20)表示测试实例的个数,然后2*T行,分别表示A和B两个正整数。注意整数非常大,那意味着你不能用32位整数来处理。你可以确定的是整数的长度不超过1000。
输出
对于每一个样例,你应该输出两行,第一行是"Case #:",#表示第几个样例,第二行是一个等式"A+B=Sum",Sum表示A+B的结果。注意等式中有空格。
样例输入
2
1
2
112233445566778899
998877665544332211
样例输出
Case 1: 1 + 2 = 3 Case 2:112233445566778899 + 998877665544332211 = 1111111111111111110
示例代码
#include<iostream> #include<cstring> using namespace std; char a[1001],b[1001]; void add(){ char c[1001]; memset(c,'0',1001); for(int i=0;i<strlen(a);i++){ c[i]=a[strlen(a)-1-i]; } memset(a,'0',1001); for(int i=0;i<strlen(b);i++){ a[i]=b[strlen(b)-1-i]; } for(int i=0;i<1000;i++){ a[i]+=c[i]-'0'; if(a[i]>'9'){ a[i]=a[i]-10; a[i+1]=a[i+1]+1; } } } int main(){ int T,n=0; cin>>T; while(T--){ n++; memset(a,'0',1001); memset(b,'0',1001); cin>>a>>b; cout<<"Case "<<n<<":"<<endl; cout<<a<<" + "<<b<<" = "; add(); int k; for(k=1000;k>=0;k--){ if(a[k]!='0'){ break; } } for (int i=k;i>=0;i--){ cout<<a[i]; } cout<<endl; } return 0; }