Buổi 7: Bài toán xử lý chữ số

Hôm nay em sẽ học

  1. "Bóc" từng chữ số bằng % 10 và // 10
  2. Đảo ngược một số
  3. Kiểm tra số đối xứng
  4. Cách 2: đổi số thành xâu để xử lý nhanh

Bấm vào slide rồi dùng phím ← → để chuyển, phím F để xem toàn màn hình.

Mở toàn màn hình

1. Kiến thức chính

Bóc từng chữ số bằng % 10 và // 10

n = int(input())
while n > 0:
    d = n % 10        # chữ số cuối
    print(d)
    n //= 10          # bỏ chữ số cuối

Chạy tay với n = 2026:

Vòngn đầu vòngd = n % 10n sau //= 10
120266202
2202220
32002
4220 → dừng

Đảo ngược một số

r = 0
while n > 0:
    r = r * 10 + n % 10    # 1234 → r = 4, 43, 432, 4321
    n //= 10

Cách 2: đổi số thành xâu

s = input()        # đọc luôn dạng xâu, ví dụ "2026"
len(s)             # số chữ số: 4
s[0], s[-1]        # chữ số đầu "2", chữ số cuối "6"
s[::-1]            # đảo ngược: "6202"
for c in s:        # duyệt từng chữ số
    d = int(c)     # đổi một ký tự thành số
CáchKhi nào dùng
% 10 và // 10số đang được tính toán; đổi cơ số (nhị phân…)
Đổi thành xâuđề cho sẵn số, chỉ cần đếm / đảo / so sánh chữ số

Đổi sang hệ nhị phân

Giống bóc chữ số nhưng chia cho 2: các số dư đọc từ dưới lên chính là biểu diễn nhị phân. 13 → dư 1, 0, 1, 1 → 1101.

2. Ghi nhớ và lỗi thường gặp

LỗiVí dụ
Quên trường hợp n = 0while n > 0 không chạy lần nào → đếm ra 0 chữ số
Quên đổi ký tự sang sốtong += c lỗi – phải tong += int(c)
Ghép xâu nhị phân sai chiềuphải ghép vào đầu: kq = str(n % 2) + kq

3. Câu hỏi tự kiểm tra

  1. 7351 % 10 và 7351 // 10 bằng bao nhiêu?
  2. Đảo ngược số 1200 được số nào?
  3. Số nhị phân 101 bằng bao nhiêu trong hệ thập phân?

4. Bài tập về nhà

Bài 1 ★ – DEMCHAN

Input: số nguyên n (0 ≤ n ≤ 10¹⁸).

Output: số chữ số chẵn của n.

InputOutput
20264
1350

Bài 2 ★★ – DOIXUNG11

Không có input. Liệt kê tất cả các số đối xứng có 4 chữ số chia hết cho 11, theo thứ tự tăng dần, trên một dòng.

Trước khi chạy, hãy đoán xem có bao nhiêu số như vậy!

Bài 3 ★★ – NHIPHAN2

Input: một xâu gồm các chữ số 0 và 1 (độ dài ≤ 60) – biểu diễn nhị phân của một số.

Output: số đó trong hệ thập phân.

InputOutput
110113
00

Bài 4 ★★★ (thử thách) – SODEP

Một số gọi là số đẹp nếu tổng các chữ số của nó chia hết cho 10. Ví dụ 19, 55, 208.

Input: hai số nguyên a, b (1 ≤ a ≤ b ≤ 10⁵).

Output: số lượng số đẹp trong đoạn từ a đến b.

InputOutput
1 1009
19 191
Cách nộp bài: mỗi bài một file .py đặt tên theo tên bài. Chạy thử với tất cả ví dụ trước khi nộp!

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Chưa mở đáp án

Đáp án sẽ được mở sau khi các em nộp bài tập về nhà.

Zalo