ACM——大数加算

5199 ワード

だいすうかさん
時間制限(通常/Java):1000 MS/3000 MS         実行メモリ制限:65536 KByte合計コミット:2085           試験合格:543
説明
 
2つの非負の整数(1000ビット以内)の和を求めます.
入力
2つの非負の整数(1000ビット以内)をスペースで区切ります.
しゅつりょく
 
2つの非負の整数の和.
サンプル入力
111111111111 222222222222
サンプル出力
333333333333
ヒント
 
テーマソース
GUOJ
 
#include<iostream>

#include<string>

using namespace std;

int main()

{

    char str[1001];

    char str2[1001];

    for(int i=0;i<1001;i++){

        str[i]='0';

        str2[i]='0';

    }

    int index=1000;

    int value=0;

    string stp;

    cin>>stp;

    value=stp.length()-1;

    while(value>=0){

        str[index--]=stp[value--];

    }

    int index2=1000;

    string stp2;

    cin>>stp2;

    value=stp2.length()-1;

    while(value>=0){

        str2[index2--]=stp2[value--];

    }

    char result[1001];

    int plus=0;

    for(int i=1000;i>=0;i--){

        int temp=((str[i]-'0')+(str2[i]-'0')+plus)%10;

        plus= ((str[i]-'0')+(str2[i]-'0')+plus)/10;

        result[i]=(char)temp+'0';

    }

    int pos=0;

    while(result[pos]=='0'){

        pos++;

    }

    for(;pos<1001;pos++)

        cout<<result[pos];

    cout<<endl;

    return 0;

}