Phase 2
Toán & số học
Chia hết, ước–bội, số nguyên tố, sàng Eratosthenes, và xử lý số lớn
Số học xuất hiện ở hầu hết các đề. Phần này dạy các công cụ kinh điển: xử lý chữ số, ước chung lớn nhất bằng thuật toán Euclid, tìm số nguyên tố bằng sàng Eratosthenes, và cách cộng/nhân những số vượt quá cả long long.
1. Chia hết & xử lý chữ số
Hai phép toán nền tảng: / là chia lấy phần nguyên, % là lấy số dư. Với số nguyên: 17 / 5 = 3 và 17 % 5 = 2. Từ đó ta tách được từng chữ số của một số:
Tính tổng các chữ số và đảo ngược số
int n;
cin >> n;
int tong = 0, dao = 0;
while (n > 0) {
int d = n % 10; // chu so hang don vi
tong += d;
dao = dao * 10 + d; // ghep chu so vao so dao
n /= 10; // bo chu so vua lay
}
cout << tong << " " << dao << "\n";
n % 10 lấy chữ số cuối, n /= 10 bỏ nó đi. Lặp đến khi hết chữ số. Ví dụ 1234 → tổng 10, đảo 4321.