HDU 1002 A + B問題II(多数の付加)


問題の説明
私はあなたのために非常に単純な問題を抱えています。二つの整数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 
}

 

おすすめ

転載: www.cnblogs.com/Shallow-dream/p/11610485.html