SUMBIG - Tính tổng 2 số nguyên lớn

Xem dạng PDF

Gửi bài giải


Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, PyPy, Python, Ruby, Rust, Scratch, Swift

Cho hai số nguyên không âm ~a~ và ~b~. Hãy tính ~a + b~.

Input

  • Dòng đầu chứa số ~a~.
  • Dòng sau chứa số ~b~.

Giới hạn:

  • ~0 ≤ a, b < 10^{1000000} (a, b\text{ có không quá }10^5\text{ chữ số})~

Output

  • Gồm một dòng duy nhất là kết quả của ~a + b~.

Sample

Input #1
123
4567
Output #1
4690
Input #2
1234567890
9879879876543219876
Output #2
9879879877777787766

Problem source: Chuyên Sơn La Online Judge


Bình luận

Please read the guidelines before commenting.



  • 0
    thanhvinh21052015  đã bình luận lúc 22, Tháng 3, 2026, 9:05

    ta phải có tư duy , kiên trì mới làm được c++ , nó dài loằng ngoằng gì đâu ... nhưng python siêu dễ chỉ cần áp dụng mã này thì sẽ full AC nha anh em :

    a = input().strip() b = input().strip()

    a = int(a) b = int(b)

    print(a + b)


  • 0
    DylanRyo  đã bình luận lúc 21, Tháng 1, 2026, 10:10

    include<iostream>

    include<cstring>

    using namespace std; int main() { char a[100005]; char b[100005]; cin.getline(a,100005); cin.getline(b,100005); long long m=strlen(a); long long n=strlen(b); int i=m-1,j=n-1; int du=0; char S[1000000]=""; long long l=0; while(i>=0||j>=0||du>0){ int vala,valb; if(i<0){ vala=0; }else { vala=a[i]-'0'; i--; } if(j<0){ valb=0; } else{ valb=b[j]-'0'; j--; } int tong=(vala+valb+du)%10; S[l++]=tong+'0'; du=(vala+valb+du)/10; } S[l]='\0'; for(long long k=0;k<l/2;k++){ char temp=S[k]; S[k]=S[l-k-1]; S[l-k-1]=temp; }

    cout<&lt;S;
    

    }


  • 1
    Duong_Thanh_Khiem_L8  đã bình luận lúc 12, Tháng 1, 2026, 13:38

    PYTHON (Nhìn chỉ biết cười=)))

    a = input().strip()
    b = input().strip()
    
    a = int(a)
    b = int(b)
    
    print(a + b)
    

    C++ (Nhìn nó nhức đầu=))

    #include <bits/stdc++.h>
    using namespace std;
    
    string strip(string s) {
        int i = 0;
        while (i + 1 < (int)s.size() && s[i] == '0') i++;
        return s.substr(i);
    }
    
    bool absLess(string a, string b) {
        if (a.size() != b.size()) return a.size() < b.size();
        return a < b;
    }
    
    string addAbs(string a, string b) {
        while (a.size() < b.size()) a = "0" + a;
        while (b.size() < a.size()) b = "0" + b;
    
        int carry = 0;
        string res = "";
    
        for (int i = a.size() - 1; i >= 0; i--) {
            int sum = (a[i] - '0') + (b[i] - '0') + carry;
            res.push_back(char(sum % 10 + '0'));
            carry = sum / 10;
        }
        if (carry) res.push_back(char(carry + '0'));
    
        reverse(res.begin(), res.end());
        return strip(res);
    }
    
    string subAbs(string a, string b) { // |a| >= |b|
        while (b.size() < a.size()) b = "0" + b;
    
        int borrow = 0;
        string res = "";
    
        for (int i = a.size() - 1; i >= 0; i--) {
            int x = (a[i] - '0') - borrow;
            int y = b[i] - '0';
            if (x < y) {
                x += 10;
                borrow = 1;
            } else borrow = 0;
            res.push_back(char(x - y + '0'));
        }
    
        reverse(res.begin(), res.end());
        return strip(res);
    }
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
    
        string a, b;
        cin >> a >> b;
    
        bool negA = (a[0] == '-');
        bool negB = (b[0] == '-');
    
        if (negA) a.erase(0, 1);
        if (negB) b.erase(0, 1);
    
        string res;
        bool negRes = false;
    
        if (negA == negB) {
            res = addAbs(a, b);
            negRes = negA;
        } else {
            if (absLess(a, b)) {
                res = subAbs(b, a);
                negRes = negB;
            } else {
                res = subAbs(a, b);
                negRes = negA;
            }
        }
    
        if (res == "0") negRes = false;
        if (negRes) cout << "-";
        cout << res;
    
        return 0;
    }
    

    • 0
      karasuhus  đã bình luận lúc 9, Tháng 4, 2026, 4:42

      print(int(input()) + int(input())) như này là xong rồi ko cần dài dòng đâu


  • -2
    trandaiquangdeptrai2011  đã bình luận lúc 1, Tháng 11, 2025, 13:59

    1 năm sau tôi sẽ quay lại


  • 0
    DANHC  đã bình luận lúc 23, Tháng 10, 2025, 13:08

    Test case #6 la gi v help voi


  • -4
    apt2_0227  đã bình luận lúc 23, Tháng 8, 2025, 2:35

    Python thể hiện sức mạnh🤳


  • 0
    codec  đã bình luận lúc 1, Tháng 1, 2025, 10:30

    tại py k giới hạn , c++ thì nó có , nên phải khổ v đó b , luyện tư duy í


  • 0
    Tri1501_10Ti  đã bình luận lúc 15, Tháng 10, 2024, 0:13

    code c++ đi đừng xài py


  • 1
    kietjumper  đã bình luận lúc 26, Tháng 9, 2024, 3:15

    Python ko giới hạn số chữ số :))


  • 1
    phong_tran1202  đã bình luận lúc 12, Tháng 8, 2024, 14:16

    python nhìn chỉ biết cười =))


  • 0
    haidang3004  đã bình luận lúc 27, Tháng 3, 2024, 15:22

    python thì dễ mà sao c++ khó thế nhỉ


  • 0
    duydonv  đã bình luận lúc 21, Tháng 1, 2024, 6:34

    sao em lại sai đúng test case 8 thôi nhỉ, em code bằng c và dùng stack để cộng. Có ai code kiểu này không chỉ giáo em với


  • 3
    dinhvantung0611  đã bình luận lúc 4, Tháng 1, 2024, 17:37

    Code python có thể AC


  • -2
    triduc_2k9  đã bình luận lúc 23, Tháng 12, 2023, 14:08

    Khó quá


  • -1
    nvthang  đã bình luận lúc 22, Tháng 11, 2023, 3:03

    case 5 có bị sai test ko ạ


  • 0
    triphan2004  đã bình luận lúc 5, Tháng 11, 2023, 16:22

    Test case 9 là gì vậy mọi người