#include <iostream>
#include <stack>
#include <string>
#include <sstream>
using namespace std;
int main(int argc, const char * argv[])
{
stringstream ss;
stack<int> stack1, stack2, resultStack;
string input;
// Build stack 1
cout << "Numbers: ";
cin >> input;
for (int i = 0; i != input.length(); ++i) {
int temp = 0;
ss << input[i];
ss >> temp;
stack1.push(temp);
}
// Build stack 2
cout << "Numbers: ";
cin >> input;
for (int i = 0; i != input.length(); ++i) {
int temp = 0;
ss << input[i];
ss >> temp;
stack2.push(temp);
}
int carry=0, op1=0, op2=0;
while (true) {
op1=0,op2=0;
if (stack1.empty() && stack2.empty()) break;
if (!stack1.empty()) { op1 = stack1.top(); stack1.pop(); }
if (!stack2.empty()) { op2 = stack2.top(); stack2.pop(); }
int opTotal = 0;
opTotal = op1 + op2 + carry;
resultStack.push(opTotal%10);
if (opTotal >= 10) carry = 1; else carry = 0;
}
cout << "\nResult is: ";
while (!resultStack.empty()) {
cout << resultStack.top();
resultStack.pop();
}
cout <<"\n\n";return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxzc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CiAgICAgICAgc3RyaW5nc3RyZWFtIHNzOwogICAgICAgIHN0YWNrPGludD4gc3RhY2sxLCBzdGFjazIsIHJlc3VsdFN0YWNrOwogICAgICAgIHN0cmluZyBpbnB1dDsKICAgICAgICAKICAgICAgICAvLyBCdWlsZCBzdGFjayAxCiAgICAgICAgY291dCA8PCAiTnVtYmVyczogIjsKICAgICAgICBjaW4gPj4gaW5wdXQ7CiAgICAgICAgCiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgIT0gaW5wdXQubGVuZ3RoKCk7ICsraSkgewogICAgICAgICAgICAgICAgaW50IHRlbXAgPSAwOwogICAgICAgICAgICAgICAgc3MgPDwgaW5wdXRbaV07CiAgICAgICAgICAgICAgICBzcyA+PiB0ZW1wOwogICAgICAgICAgICAgICAgc3RhY2sxLnB1c2godGVtcCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIC8vIEJ1aWxkIHN0YWNrIDIKICAgICAgICBjb3V0IDw8ICJOdW1iZXJzOiAiOwogICAgICAgIGNpbiA+PiBpbnB1dDsKICAgICAgICBmb3IgKGludCBpID0gMDsgaSAhPSBpbnB1dC5sZW5ndGgoKTsgKytpKSB7CiAgICAgICAgICAgICAgICBpbnQgdGVtcCA9IDA7CiAgICAgICAgICAgICAgICBzcyA8PCBpbnB1dFtpXTsKICAgICAgICAgICAgICAgIHNzID4+IHRlbXA7CiAgICAgICAgICAgICAgICBzdGFjazIucHVzaCh0ZW1wKTsKICAgICAgICB9CiAgICAgICAgCgogICAgICAgIAogICAgICAgIGludCBjYXJyeT0wLCBvcDE9MCwgb3AyPTA7CiAgICAgICAgd2hpbGUgKHRydWUpIHsKICAgICAgICAgICAgICAgIG9wMT0wLG9wMj0wOwogICAgICAgICAgICAgICAgaWYgKHN0YWNrMS5lbXB0eSgpICYmIHN0YWNrMi5lbXB0eSgpKSBicmVhazsKICAgICAgICAgICAgICAgIGlmICghc3RhY2sxLmVtcHR5KCkpIHsgb3AxID0gc3RhY2sxLnRvcCgpOyBzdGFjazEucG9wKCk7IH0KICAgICAgICAgICAgICAgIGlmICghc3RhY2syLmVtcHR5KCkpIHsgb3AyID0gc3RhY2syLnRvcCgpOyBzdGFjazIucG9wKCk7IH0KICAgICAgICAgICAgICAgIGludCBvcFRvdGFsID0gMDsKICAgICAgICAgICAgICAgIG9wVG90YWwgPSBvcDEgKyBvcDIgKyBjYXJyeTsKICAgICAgICAgICAgICAgIHJlc3VsdFN0YWNrLnB1c2gob3BUb3RhbCUxMCk7CiAgICAgICAgICAgICAgICBpZiAob3BUb3RhbCA+PSAxMCkgY2FycnkgPSAxOyBlbHNlIGNhcnJ5ID0gMDsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgY291dCA8PCAiXG5SZXN1bHQgaXM6ICI7CiAgICAgICAgd2hpbGUgKCFyZXN1bHRTdGFjay5lbXB0eSgpKSB7CiAgICAgICAgICAgICAgICBjb3V0IDw8IHJlc3VsdFN0YWNrLnRvcCgpOwogICAgICAgICAgICAgICAgcmVzdWx0U3RhY2sucG9wKCk7CiAgICAgICAgfQogICAgICAgIAogICAgICAgIGNvdXQgPDwiXG5cbiI7cmV0dXJuIDA7Cn0K