题目要求
私はあなたのための非常に単純な問題を抱えています。二つの整数A及びBを考えると、あなたの仕事は、A + Bにの合計を計算することである
入力の
入力の最初の行は、テストケースの数を意味する整数Tを(1 <= T <= 20)を含みます。次いで、Tラインは、次の各ラインは、整数手段はあなたが32ビットの整数を使用してそれらを処理しないことを、非常に大きいことが2つの正の整数であり、AおよびB通知から構成されています。あなたは、各整数の長さが1000超えないと仮定して
、出力を
使用すると、出力の2行はすべきで、各テストケースについて。最初の行は、「ケース#:」で、#は、テストケースの数を意味しています。第二行は、式「A + B =合計」であり、合計は、いくつかのスペースが式int型があるA + Bの注意の結果を意味します。出力2つのテストケースの間に空白行。
サンプル入力
2
1 2
112233445566778899 998877665544332211
サンプル出力
ケース1:
1 + 2 = 3
2ケース:
112233445566778899 998877665544332211 + = 1111111111111111110の
多数のデジタル位置を得るために、文字列、各ビット列を-'0」もたらすために長い長に格納することには大きすぎるデータ追加ため。2つのデジタル入力とデジタル加算のそれぞれに対応する配列内の2つを格納するために2つのアレイを使用するだけでなく、キャリーの条件は、10よりも大きいかを決定します。
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<math.h>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int n,t;
cin>>n;
for(t=1;t<=n;t++)
{
char a[1111],b[1111];
int c[1111];
cin>>a>>b;
int i,j,k=0;
int m=0;
for(i=strlen(a)-1,j=strlen(b)-1;i>=0&&j>=0;i--,j--)
{
int p=(a[i]-'0')+(b[j]-'0')+m;
m=p/10;
c[k++]=p%10;
}
while(i>=0)
{
int p=(a[i]-'0')+m;
m=p/10;
c[k++]=p%10;
i--;
}
while(j>=0)
{
int p=(b[j]-'0')+m;
m=p/10;
c[k++]=p%10;
j--;
}
if(m)
{
c[k++]=m;
}
printf("Case %d:\n",t);
cout<<a<<' '<<'+'<<' '<<b<<' '<<'='<<' ';
for(int i=k-1;i>=0;i--)
cout<<c[i];
printf("\n");
if(t!=n)printf("\n");
}
return 0;
}