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, 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

Hãy đọc nội quy trước khi bình luận.



  • 0
    tienphat2101  đã bình luận lúc 27, Tháng 3, 2024, 14:37

    include <bits/stdc++.h>

    using namespace std;
    void dao(int a[],int n){
    int l=0,r=n-1;
    while(l&lt;r){
        int tmp = a[l];
        a[l]=a[r];
        a[r]=tmp;
        ++l;
        --r;
    }
    }
    void solve(char a[],char b[]){
    int n1=strlen(a),n2=strlen(b),n=0;
    int x[n1],y[n1],z[n1+1];
    for(int i=0;i&lt;n1;i++) x[i]=a[i]-'0';
    for(int i=0;i&lt;n2;i++) y[i]=b[i]-'0';
    dao(x,n1); dao(y,n2);
    for(int i=n2;i&lt;n1;i++){
        y[i] = 0;
    }
    int nho = 0;
    for(int i=0;i&lt;n1;i++){
        int tmp = x[i]+y[i]+nho;
        z[n++] = tmp%10;
        nho = tmp/10;
    }
    if(nho==1) z[n++] = nho;
    for(int i=n-1;i>=0;i--){
        cout << z[i];
    }
    }
    int main(){
    char a[1000000],b[1000000];
    cin >> a;
    cin >> b;
    if(strlen(a)>=strlen(b)) solve(a,b);
    else solve(b,a);
    return 0;
    }
    

    Code full AC nha mọi người Cái này các bạn lên mạng gõ cách tính tổng 2 số nguyên lớn để tìm hiểu cách làm nhé, cách của mình cũng là một cách. Chứ giải thích ở đây rất là dài dòng mà cũng rất khó hiểu.


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

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


  • 1
    Phamnhatvuong555  đã bình luận lúc 21, Tháng 2, 2024, 15:40

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

    total = a + b

    print(total)

    python chỉ cần 4 dòng là ALL AC


  • -3
    sang41dz  đã bình luận lúc 12, Tháng 2, 2024, 7:19

    Py ez


  • -1
    ngochahh2005  đã bình luận lúc 7, Tháng 2, 2024, 13:50

    import java.util.Scanner;

    public class SUMBIG {

    public static String sumBig(String a, String b) {
        if (a.length() < b.length()) {
            String c = a;
            a = b;
            b = c;
        }
        while (a.length() != b.length()) {
            b = "0" + b;
        }
        int c1 = 0;
        String s = "";
        for (int i = b.length() - 1; i >= 0; i--) {
            String s1 = "", s2 = "";
            s1 += a.charAt(i);
            s2 += b.charAt(i);
            int a1 = Integer.valueOf(s1);
            int b1 = Integer.valueOf(s2);
            int c = a1 + b1 + c1;
            c1 = c/10;
            c %= 10;
            s = String.valueOf(c)+ s;
        }
        if (c1 != 0) s = String.valueOf(c1) + s;
    
        return s;
    }
    
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
    
        String a = sc.nextLine();
        String b = sc.nextLine();
        System.out.println(sumBig(a,b));
    
        sc.close();
    }
    

    }


  • 0
    thh  đã bình luận lúc 23, Tháng 1, 2024, 9:43

    Code C++ cho các bạn chưa AC được nha code này AC 100%,nếu thấy hay xin các bạn up vote cho mình nhé

    include<bits/stdc++.h>

    using namespace std;

    define ll long long

    typedef vector <ll> bignum;

    string a,b; bignum add(bignum a, bignum b) {

    bignum c;
    c.resize(max(a.size(), b.size()));
    a.resize(c.size());
    b.resize(c.size());
    ll mem = 0;
    for (int i = 0; i < c.size(); ++i){
        ll sum = mem + a[i] + b[i];
        c[i] = sum % 10;
        mem = sum / 10;
    }
    if(mem > 0) 
        c.push_back(mem);
    return c;
    

    }

    bignum toBignum(string a) {

    bignum c;
    c.clear();
    for(int i = a.size() - 1; i >= 0; i--)
        c.push_back(a[i] - 48);
    return c;
    

    }

    string toString(bignum a) {

    string s = "";
    for(int i = a.size()-1; i >= 0; i--)
        s += char(a[i] + 48);
    return s;
    

    } void solve() {

    cin >> a >> b;
    bignum A = toBignum(a);
    bignum B = toBignum(b);
    bignum C = add(A,B);
    cout << toString(C);
    

    } main() {

    ios::sync_with_stdio(false);
    cin.tie(nullptr);cout.tie(nullptr);
    
    solve();
    return 0;
    

    }


  • 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


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

    Code python có thể AC


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

    Khó quá


  • 0
    NooB  đã bình luận lúc 15, Tháng 12, 2023, 14:41

    ...


  • 0
    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


  • -42
    Names_  đã bình luận lúc 10, Tháng 10, 2023, 8:20

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.


  • 1
    Helectric  đã bình luận lúc 24, Tháng 8, 2023, 15:55

    Case 5 là gì vậy


    • 1
      codega  đã bình luận lúc 25, Tháng 10, 2023, 17:14

      là số 10^11 b nhé, mấy bài này nên dùng chuỗi mới pass dc