#1018
A+B again
NEUQer605616841 Sec128 MB
描述数据评测
题目描述
谷学长有一个非常简单的问题给你,给你两个整数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
来源
hdu by zxp
#include<iostream>
#include<stdio.h>
#include<cstring>
#include<iomanip>
#include<math.h>
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)-i-1];
memset(a,'0',1001);
for(int i=0;i<strlen(b);i++)
a[i]=b[strlen(b)-i-1];
for(int i=0;i<1000;i++)
{
a[i]=a[i]+c[i]-'0';
if(a[i]>'9')
{
a[i]=a[i]-10;
a[i+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;
}
}