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

Đếm số lần nhớ khi cộng hai số trong C++


Cho hai số num_1 và num_2. Đếm số phép nhớ (carry) khi cộng hai số. Ví dụ: 123 + 157 → 1 lần nhớ (7+3=10, 1+2+5=8, 1+1=2).

Ví dụ

Đầu vào − num_1=432, num_2=638

Đầu ra − 2

Giải thích − 2+8=10 (nhớ 1), 3+3+1=7 (không nhớ), 4+6=10 (nhớ 1) → 2 lần.

Đầu vào − num_1=9999, num_2=111

Đầu ra − 4

Giải thích − Mỗi cặp chữ số đều tạo ra phép nhớ.

Phương pháp giải

Chuyển số thành chuỗi. Duyệt từ cuối chuỗi (chữ số hàng đơn vị). Chuyển ký tự sang số, cộng hai chữ số và carry trước. Nếu tổng ≥ 10 → carry=1, count++. Ngược lại carry=0.

  • Hàm carry_add_two_numbers(int num_1, int num_2).
  • Chuyển sang string bằng to_string.
  • count = 0, carr = 0.
  • While độ dài > 0:
    • Lấy chữ số cuối của mỗi chuỗi (nếu còn), giảm độ dài.
    • add = i + j + carr.
    • Nếu add >= 10: carr=1, count++, else carr=0.
  • Trả về count.

Ví dụ code

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

int carry_add_two_numbers(int num_1, int num_2) {
    string str_1 = to_string(num_1);
    int len1 = str_1.length();
    string str_2 = to_string(num_2);
    int len2 = str_2.length();
    int count = 0, carr = 0;
    while (len1 != 0 || len2 != 0) {
        int i = 0, j = 0;
        if (len1 > 0) { i = str_1[len1 - 1] - '0'; len1--; }
        if (len2 > 0) { j = str_2[len2 - 1] - '0'; len2--; }
        int add = i + j + carr;
        if (add >= 10) { carr = 1; count++; }
        else carr = 0;
    }
    return count;
}

int main() {
    int num_1 = 234578;
    int num_2 = 1234;
    int count = carry_add_two_numbers(num_1, num_2);
    cout << "Count of number of carry operations required to add two numbers are: " << count;
    return 0;
}

Đầu ra

Count of number of carry operations required to add two numbers are: 2