Bài toán xử lý chữ số

Buổi 7

Dạng bài rất hay gặp ở bài 1 của đề thi

Buổi 7 – Bài toán xử lý chữ số1 / 19

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
Buổi 7 – Bài toán xử lý chữ số2 / 19

Khởi động

  • 2026 chia 10 dư mấy?
  • 2026 chia lấy nguyên cho 10 được mấy?
  • Làm tiếp với số vừa được: 202 chia 10 dư mấy?
Đó chính là cách bóc từng chữ số từ phải sang trái!
Buổi 7 – Bài toán xử lý chữ số3 / 19

Phần 1: Bóc chữ số

Như bóc từng lớp vỏ hành
Buổi 7 – Bài toán xử lý chữ số4 / 19

Bóc từng chữ số

n = int(input())
while n > 0:
    d = n % 10
    print(d)
    n //= 10
2026
6
2
0
2
  • n % 10: lấy chữ số cuối
  • n //= 10: bỏ chữ số cuối
  • Lặp đến khi n bằng 0
Buổi 7 – Bài toán xử lý chữ số5 / 19

Chạy tay với n = 2026

Vòngn đầu vòngd = n % 10n sau //= 10
120266202
2202220
32002
4220 → dừng
Chạy tay trên giấy là kỹ năng cực kỳ quan trọng. Hãy luyện thường xuyên!
Buổi 7 – Bài toán xử lý chữ số6 / 19

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

n = int(input())
r = 0
while n > 0:
    r = r * 10 + n % 10
    n //= 10
print(r)
nr
12340
1234
1243
1432
04321
r * 10 dịch r sang trái một chữ số, rồi thêm chữ số mới vào cuối.
Buổi 7 – Bài toán xử lý chữ số7 / 19

Phần 2: Dùng xâu

Nhanh, gọn khi đi thi
Buổi 7 – Bài toán xử lý chữ số8 / 19

Số thành xâu

s = input()
print(len(s))
print(s[0], s[-1])
print(s[::-1])
tong = 0
for c in s:
    tong += int(c)
print(tong)
2026
4
2 6
6202
10
  • len(s): số chữ số
  • s[0]: chữ số đầu, s[-1]: chữ số cuối
  • s[::-1]: đảo ngược
  • int(c): đổi một ký tự thành số
Buổi 7 – Bài toán xử lý chữ số9 / 19

Dùng cách nào?

CáchKhi nào dùng
% 10 và // 10Rèn tư duy; đổi cơ số (nhị phân…); số đang được tính toán
Đổi thành xâuĐề cho sẵn số, chỉ cần đếm / đảo / so sánh chữ số
Em cần biết cả hai cách.
Buổi 7 – Bài toán xử lý chữ số10 / 19

Luyện tập

Bài ★ cả lớp · Bài ★★★ thử thách
Buổi 7 – Bài toán xử lý chữ số11 / 19

Bài 1 ★ – TONGCS

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

Output: tổng các chữ số của n.

InputOutput
202610
00
Làm cả hai cách: bóc chữ số và dùng xâu.
Buổi 7 – Bài toán xử lý chữ số12 / 19

Bài 2 ★ – DAOSO

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

Output: số đảo ngược của n (bỏ các số 0 ở đầu).

InputOutput
12344321
120021
Buổi 7 – Bài toán xử lý chữ số13 / 19

Bài 3 ★★ – DOIXUNG

Số đối xứng là số đọc xuôi hay ngược đều như nhau.

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

Output: YES nếu n đối xứng, ngược lại NO.

InputOutput
12321YES
2026NO
7YES
Buổi 7 – Bài toán xử lý chữ số14 / 19

Bài 4 ★★ – CSMAX

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

Output: chữ số lớn nhất của n và số lần nó xuất hiện.

InputOutput
391939 2
55 1
Buổi 7 – Bài toán xử lý chữ số15 / 19

Bài 5 ★★ – ARMSTRONG

Số có k chữ số là số Armstrong nếu tổng lũy thừa bậc k các chữ số bằng chính nó.

Ví dụ: 153 = 1³ + 5³ + 3³

Input: n (1 ≤ n ≤ 10⁹). Output: YES / NO.

InputOutput
153YES
9474YES
100NO
Buổi 7 – Bài toán xử lý chữ số16 / 19

Bài 6 ★★★ – NHIPHAN

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

Output: biểu diễn nhị phân của n.

InputOutput
131101
00
Không dùng hàm bin. Gợi ý: giống bóc chữ số, nhưng chia cho 2 thay vì 10.
Buổi 7 – Bài toán xử lý chữ số17 / 19

Tóm tắt buổi 7

while n > 0:
    d = n % 10
    ...
    n //= 10
  • % 10 lấy chữ số cuối, // 10 bỏ chữ số cuối
  • Đảo số: r = r * 10 + d
  • Xâu: len(s), s[::-1], int(c)
  • Nhớ thử trường hợp n = 0
Buổi 7 – Bài toán xử lý chữ số18 / 19

Bài về nhà

  1. Đếm số chữ số chẵn của n.
  2. Liệt kê các số đối xứng có 4 chữ số chia hết cho 11. (Đoán trước kết quả!)
  3. ★★★ Đổi một số từ hệ nhị phân (xâu gồm 0 và 1) sang hệ thập phân.
Input bài 3Output
110113
Buổi 7 – Bài toán xử lý chữ số19 / 19
← → chuyển slide · F toàn màn hình