[ create a new paste ] login | about

Link: http://codepad.org/wgyBfoM1    [ raw code | output | fork ]

C++, pasted on Oct 18:
#include <string>
#include <sstream>
#include <vector>

string func(string& a, string&b){
    int length_a = a.length();
    int length_b = b.length();
    int max_len =  (length_a>length_b) ? length_a : length_b;
    int min_len =  (length_a<length_b) ? length_a : length_b;
    bool flag = false;
    if(max_len == length_a){
       flag = true;
    }
    vector<int> digits_a;
    vector<int> digits_b;
    string res = "";
    stringstream ss;
    int temp = -1;
    for(int i =0; i < length_a; i++){
        ss << a[i];
        ss >> temp;
        digits_a.push_back(temp);
        ss.clear();
    }
    temp = -1;
    for(int i =0; i < length_b; i++){
        ss << b[i];
        ss >> temp;
        digits_b.push_back(temp);
        ss.clear();
    }
    int r = 0;
    reverse(digits_a.begin(),digits_a.end());
    reverse(digits_b.begin(),digits_b.end());
    cout<<digits_a<<" "<<digits_b;
    for(int i = 0; i<min_len; i++){
        int d_a = digits_a[i];
        int d_b = digits_b[i];
        int d_res = d_a + d_b + r;
        r = d_res / 10;
        d_res = d_res - r * 10;
        stringstream stream;
        stream<<d_res;  
        string str=stream.str();
        res = str + res;
        cout<<res<<" "<<r<<" "<<d_res<<endl;
    }
    if(flag){
        for(int i = min_len; i < max_len; i ++){
            int d_res = 0;
            if(r>0){
                int d_a = digits_a[i];
                int d_res = d_a + r;
                r = d_res / 10;
                d_res = d_res - r * 10;
            }
            else{
                d_res = digits_a[i];
            }
            stringstream stream;
            stream<<d_res;  
            string str=stream.str();
            res = str + res;
        }
    }
    else{
        for(int i = min_len; i < max_len; i ++){
            int d_res = 0;
            if(r>0){
                int d_b = digits_b[i];
                int d_res = d_b + r;
                r = d_res / 10;
                d_res = d_res - r * 10;
            }
            else{
                d_res = digits_b[i];
            }
            stringstream stream;
            stream<<d_res;  
            string str=stream.str();
            res = str + res;
        }
    }
    return res;   
}

int main(){
    string a = "9999";
    string b = "34591";
    string res = func(a, b);
    cout<<res<<" "<<9999+34591;
    return 0;
}


Output:
1
2
3
4
5
[9, 9, 9, 9] [1, 9, 5, 4, 3]0 1 0
90 1 9
590 1 5
4590 1 4
04590 44590


Create a new paste based on this one


Comments: