Monday, November 14, 2016

UVa 10013 - Super long sums

// UVa 10013 - Super long sums
#include <iostream>
#include <vector>
using namespace std;

int readNumbers(vector<int>& numberA, vector<int>& numberB) {
	int digitCount;
	cin >> digitCount;
	for (int i = 0; i < digitCount; i++) {
		int digit;
		cin >> digit;
		numberA.push_back(digit);
		cin >> digit;
		numberB.push_back(digit);
	}
	return digitCount;
}

int addTo(vector<int>& numberA, const vector<int>& numberB) {
	int addOne = 0;
	for (int i = numberA.size() - 1; i >= 0; i--) {
		int sum = numberA[i] + numberB[i] + addOne;
		numberA[i] = sum >= 10 ? sum - 10 : sum;
		addOne = sum >= 10 ? 1 : 0;
	}
	return addOne;
}

void printNumber(int firstDigit, const vector<int>& numberA) {
	if (firstDigit > 0)
		cout << firstDigit;
	for (int i = 0; i < numberA.size(); i++) {
		cout << numberA[i];
	}
	cout << endl;
}

int main() {
	int cases;
	for (cin >> cases; cases; cases--) {

		vector<int> numberA, numberB;
		int digitCount = readNumbers(numberA, numberB);

		int firstDigit = addTo(numberA, numberB);

		printNumber(firstDigit, numberA);
		if (cases > 1)
			cout << endl;
	}

	return 0;
}

No comments:

Post a Comment