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