0015 - National Budget / AizuOnlineJudge

問題 : 国家予算 | Aizu Online Judge

#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と出力、以下ならば数値を出力。
~了~