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

Kiểm tra số lớn chia hết cho 11 C++


Số lớn (string). Kiểm tra chia hết cho 11.

Quy tắc: (Tổng chữ số vị trí lẻ) - (Tổng chữ số vị trí chẵn) chia hết cho 11. (Vị trí tính từ phải sang trái, 0-based).

Chương trình C++

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

bool divisibleBy11(const string& num) {
    int oddSum = 0, evenSum = 0;
    for (int i = 0; i < (int)num.size(); i++) {
        int digit = num[num.size()-1-i] - '0'; // tu phai sang trai
        if (i % 2 == 0) evenSum += digit;
        else oddSum += digit;
    }
    return abs(oddSum - evenSum) % 11 == 0;
}

int main() {
    vector test = {"1234567589333892", "11", "121", "1331", "12345", "1001"};
    for (auto &s : test)
        cout << s << ": " << (divisibleBy11(s) ? "Chia het" : "Khong chia het") << "\n";
    return 0;
}

Kết quả

1234567589333892: Chia het
11: Chia het
121: Chia het
1331: Chia het
12345: Khong chia het
1001: Chia het