0015 - National Budget / AizuOnlineJudge
#include <iostream> #include <string> #include <vector> using namespace std; void Solve(int n) { vector<int> money; string str1, str2; for (int i=0; i<n; ++i) { money.clear(); cin >> str1 >> str2; int digit=0; for (int j=0; j<100; ++j) { int str1_pos=(str1.length()-1-j), str2_pos=(str2.length()-1-j), number=0; if (str1_pos<0 && str2_pos<0 && !digit) break; if (str1_pos >= 0) number+=str1[str1_pos]-'0'; if (str2_pos >= 0) number+=str2[str2_pos]-'0'; money.push_back( (number+digit)%10 ); if (number+digit >= 10) digit=1; else digit=0; } if (money.size() > 80) cout << "overflow"; else for (int j=money.size()-1; j>=0; --j) cout << money[j]; cout << endl; } } int main(void) { int n; cin >> n; Solve(n); return 0; }
intを用いればOverflowを起こすため、stringを用いて解いた。
数字を後ろから見ていき、数値に置き換え足し算をし10以上になれば、次の桁に1を足す。
80桁を超えればoverflowと出力、以下ならば数値を出力。
~了~