問題の説明
私はあなたのために非常に単純な問題を抱えています。二つの整数AとBを考えると、あなたの仕事は、A + Bの合計を計算することです
入力
入力の最初の行は、テストケースの数を意味する整数T(1 <= T <= 20)を含みます。次いで、Tラインは、次の各行は、32ビットの整数を使用してそれらを処理してはならないことを意味し、整数が非常に大きいという2つの正の整数であり、AおよびB通知から構成されています。あなたは、各整数の長さが1000を超えることはありません仮定してもよいです。
出力
各テストケースの場合は、あなたは、出力の2行をする必要があります。、#はテストケースの数を意味します。最初の行は、「ケース#」です。2行目は、式「A + B =合計」、和はA + Bの結果を意味しているいくつかのスペースが式int型があることに注意してください。出力2つのテストケースの間に空白行。
サンプル入力
2
1 2
112233445566778899 998877665544332211
サンプル出力用
ケース1:
1 + 2 = 3
ケース2:
+ 998877665544332211 = 1111111111111111110 112233445566778899
#include <iostreamの> する#include <アルゴリズム> する#include < 文字列・H> の#include <ベクトル> の#include <CStringの> する#include <cstdlib> 使用して 名前空間STD。 const int型 MAXN = 1024 ; チャー0009 [MAXN]、STR2 [MAXN]。 int型 array_1 [MAXN]、[MAXN] array_2。 ボイド和() { ため(int型 I =のSTRLEN(STR1) - 1、J = 0 ; I> = 0 ; i-- ) array_1 [J ++] = 0009 [I] - [0 " ; 用(int型 - I =のSTRLEN(STR2)1、J = 0 ; I> = 0 ; i-- ) array_2 [J ++] = STR2 [I] - ' 0 ' 。 以下のために(int型 i = 0 ; iは<MAXN; iは++ ) { array_2 [I] + = array_1 [I]。 もし(array_2 [I]> = 10 ) { array_2 [I + 1 ] + = array_2 [I] / 10 。 array_2 [I]%=10 ; } } COUT << STR1 << " + " << STR2 << " = " 。 int型のk =のSTRLEN(STR1)>のstrlen(STR2)?STRLEN(STR1):strlenを(STR2)。 用(K = K、K> = 0 && array_2 [K] == 0 ; k-- )。 もし(K> = 0 ) のための(; K> = 0 ; k-- ) COUT << array_2 [K]。 他の coutの << 0 ;<< てendl; } int型のmain() { int型のT。 cinを >> トン。 以下のために(int型 I = 1 ; I <= T; iは++ ) { memsetの(array_1、0、はsizeof (array_1))。 memset(array_2、0、はsizeof (array_2))。 memset(STR1、0、はsizeof (0009))。 memset(STR2、0、はsizeof (STR2))。 cinを >> STR1。 CIN >>STR2; 裁判所未満 << " ケース" << I << " :" << てendl; 和(); もし(!I = T) coutの << てendl; } 戻り 0 。 }