LBC_2B - Cộng có nhớ

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
Input: stdin
Output: stdout

Tác giả:
Dạng bài

Cho hai dãy bit ~A~, ~B~. Ta biết rằng, để thực hiện phép tính ~A + B~ cần thực hiện các phép tình từ hàng đơn vị của chúng. Ví dụ: ~A = 1011, B = 1001~ thì ~A + B = 10100~. Khi thực hiện phép cổng ở hàng đơn vị ~1 + 1 = 10~ viết ~0~ nhớ ~1~ vì đây là hệ nhị phân. Dễ thấy ~1011 + 1001~ có ~3~ phép cộng có nhớ như vậy.

Yêu cầu: Cho hai số ~A, B~. Hãy cho biết trong phép tính ~A + B~ có bao nhiêu phép tính có nhớ như vậy?

Input

  • Gồm 2 dòng chứa dãy bit ~A, B~ không quá ~10^5~ ký tự, chỉ gồm các ký tự ~0~ và ~1~.

Output

  • Gồm 1 dòng chứa 1 số nguyên là số phép tính có nhớ trong phép toán ~A + B~.

Sample

Input #1
1011
1001
Output #1
3
Input #2
10111
1111
Output #2
5

Bình luận

Please read the guidelines before commenting.



  • 0
    congtyluuthaibao1978  đã bình luận lúc 3, Tháng 12, 2025, 4:04

    include <bits/stdc++.h>

    using namespace std;

    int main(){ ios::syncwithstdio(false); cin.tie(nullptr);

    string A, B;
    cin >> A >> B;
    
    int i = (int)A.size() - 1;
    int j = (int)B.size() - 1;
    int carry = 0;
    long long cnt = 0;
    
    while (i >= 0 || j >= 0) {
        int a = (i >= 0 ? A[i] - '0' : 0);
        int b = (j >= 0 ? B[j] - '0' : 0);
        int s = a + b + carry;
        if (s >= 2) {
            cnt++;
            carry = 1;
        } else {
            carry = 0;
        }
        i--; j--;
    }
    
    cout << cnt;
    return 0;
    

    }


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

    include <bits/stdc++.h>

    using namespace std;

    int ans = 0; string add(string a, string b) { while (a.size() < b.size()) a = '0' + a; while (a.size() > b.size()) b = '0' + b; int d = 0; string r; for (int i = b.size() - 1; i >= 0; i--) { int c = (b[i] - '0') + (a[i] - '0') + d; d = c / 2; if (d > 0) ++ans; r = (char)(c % 2 + '0') + r; } return r; }

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    string a, b; cin >> a >> b;

    add(a, b); cout << ans << '\n'; }