题目描述
E_star由于在上次考试中取得了很好的成绩他开始骄傲起来,此时von看不下去了,于是就想找他的岔,他把E_star叫来说最近一道A+B编程题目不会,想要让同是计算机专业的E_star来帮他解答,E_star由于考试后的骄傲心理,二话没说结一口答应了,等到von用qq把题目要求发给E_star的时候他傻眼了。自己根本就不会,其实von知道他不会故意整他的。他为了留住面子只好请他最好的朋友你帮他解答了。这下知道骄傲的后果了吧。
输入
题目有多组数据,处理到文件结束。输入的第一行包含一个数T代表测试组数;
接下来有T行,每行有两个数A,B;
输出
对于每一组数据输出的第一行是"Case #:"代表第几组数据;
接下来一行是A+B=以及A+B的和。
每两个组数据之间输出一个空行。
示例输入
2 1 2 112233445566778899 998877665544332211
示例输出
Case 1: 1 + 2 = 3 Case 2: 112233445566778899 + 998877665544332211 = 1111111111111111110
大数模拟,注意输出的空格和数字与运算符之间的空格,被坑了一次。
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
int T;
char a[10010],b[10010];
int c[100100];
while(~scanf("%d",&T))
{
for(int j=1; j<=T; j++)
{
cin>>a>>b;
int i;
memset(c,0,sizeof(c));
int k1=strlen(a)-1;
int k2=strlen(b)-1;
int p=k1>k2?k1:k2;
for(i=0; k1>=0; i++,k1--)
{
c[i]=a[k1]-'0';
}
for(i=0; k2>=0; i++,k2--)
{
c[i]+=b[k2]-'0';
if(c[i]>=10)
{
c[i+1]++;
c[i]-=10;
}
}
while(c[i]!=0)
{
if(c[i]>=10)
{
c[i+1]++;
c[i]-=10;
}
i++;
}
printf("Case %d:\n",j);
printf("%s + %s = ",a,b);
if(c[p+1]!=0)
{
printf("%d",c[p+1]);
}
for(int i=p; i>=0; i--)
{
printf("%d",c[i]);
}
printf("\n");
if(j!=T)
{
printf("\n");
}
}
}
return 0;
}