Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng hai số lớn (Big Integer Addition) bằng chuỗi trong C++

Cho 2 chuỗi số lớn (vượt quá long long). Tính tổng trả về chuỗi.

Ví dụ

"235235823852" + "45230820348" = "280466644200"

Thuật toán

  • Đảo ngược hoặc duyệt từ cuối.
  • Cộng từng cặp chữ số + carry.
  • Đẩy kết quả vào string, cuối cùng reverse.

Code C++

#include <bits/stdc++.h>
using namespace std;

string addBig(string a, string b) {
    if (a.size() > b.size()) swap(a, b);
    int n = a.size(), m = b.size(), diff = m - n;
    string res;
    int carry = 0;
    
    for (int i = n-1; i >= 0; i--) {
        int sum = (a[i]-'0') + (b[i+diff]-'0') + carry;
        res.push_back('0' + sum%10);
        carry = sum/10;
    }
    for (int i = diff-1; i >= 0; i--) {
        int sum = (b[i]-'0') + carry;
        res.push_back('0' + sum%10);
        carry = sum/10;
    }
    if (carry) res.push_back('0' + carry);
    reverse(res.begin(), res.end());
    return res;
}

int main() {
    cout << addBig("235235823852", "45230820348") << endl; // 280466644200
    return 0;
}

Kết quả

280466644200

Độ phức tạp: O(max(len1, len2)).