随手练——大整数相加模板

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

void BigIntegerAdd(vector<int> &a, vector<int>b) {
    for (int i = 0; i < b.size(); i++) {
        a[i] += b[i];
        if (i != b.size() - 1) a[i + 1] += a[i] / 10;
        else if (a[i] >= 10) a.push_back(1);
        a[i] %= 10;
    }
    reverse(a.begin(), a.end());
}
int main() {
    vector<int>a, b;
    string A, B;
    int N;
    cin >> N;
    for (int j = 1; j <= N; j++) {
        cin >> A >> B;
        for (int i = A.length() - 1, j = B.length() - 1; j >= 0 || i >= 0; i--, j--) {
            if (i >= 0)
                a.push_back(A[i] - '0');
            else
                a.push_back(0);
            if (j >= 0)
                b.push_back(B[j] - '0');
            else
                b.push_back(0);
        }

        BigIntegerAdd(a, b);
        for (int i = 0; i < a.size(); i++) {
            cout << a[i];
        }
        cout << endl;
        a.clear(); b.clear();
    }

    return 0;
}

猜你喜欢

转载自www.cnblogs.com/czc1999/p/10365154.html