1. 使用双栈来实现。
  2. 关键是注意细节。
#include<iostream>
#include<string>
#include<stack>
#include<algorithm>
using namespace std;

string solve(string s, string t) {
        // write code here

        stack<int> left_string;
        stack<int> right_string;

        stack<int> result;

        string res = "";

        int max_length = 0;

        for(int i = 0; i< s.length();i++){
            left_string.push(s[i]-'0');
        }

        for(int i = 0; i< t.length();i++){
            right_string.push(t[i]-'0');
        }

        if(left_string.size()>=right_string.size()){
            max_length = left_string.size();
        }else{
            max_length = right_string.size();
        }


        int add_on = 0;// 进位
        while(max_length){
            int up = 0; // 上面的数字
            int down = 0;//下面的数字

            if(!left_string.size()){
                up = 0;
            }else{
                up = left_string.top();
                left_string.pop();
            }

            if(!right_string.size()){
                down = 0;
            }else{
                down = right_string.top();
                right_string.pop();
            }

            int sum = up+down + add_on;
            add_on = 0;

            if(sum>=10){
                result.push(sum-10) ;
                add_on = 1;

                if(max_length==1){//当最后一步最高位需要进位的时候。
                    result.push(1);
                }

            }else{
                result.push(sum);
            }

          max_length--;
        }

        while(!result.empty()){
            res+= result.top() + '0';
            result.pop();
        }



        return res;


    }

int main(){

    string s,t;
    while(cin>>s>>t){
        string res;
        res = solve(s,t);
        cout<<res<<endl;
    }

    return 0;
}