高精度加法

#include<iostream>
#include<vector>
using namespace std;

vector <int> add(string a , string b ){
    
    vector <int> a1 , b1;
    for(int j = a.length() - 1 ; j >= 0 ; j--) a1.push_back(a[j] - '0');
    for(int j = b.length() - 1 ; j >= 0 ; j--) b1.push_back(b[j] - '0');
    
    vector <int> c;
    int t = 0;
    int i = 0;
    while( i < a1.size() && i < b1.size()){
        c.push_back((a1[i] + b1[i] + t) % 10);
        t = (a1[i] + b1[i] + t) / 10;
        i ++;
    }
    
    while( i < a1.size()){
        c.push_back((a1[i] + t) % 10);
        t = (a1[i] + t) / 10;
        i ++;
    }
    
    while( i < b1.size()){
        c.push_back((b1[i] + t) % 10);
        t = (b1[i] + t) / 10;
        i ++;
    }

    if(t != 0) c.push_back(t);

    return c;
}
int main(){
    string a , b;
    cin >> a >> b;
    vector <int> c = add(a ,b);    
    for(int i = c.size() - 1 ; i >= 0 ; i --) cout << c[i];
    return 0;
}
posted @ 2024-10-20 22:25  _l_x_y  阅读(1)  评论(0编辑  收藏  举报