1. Bản chất Toán học
Để một số có 4 chữ số S = 1000a + 100b + 10c + d đồng thời chia hết cho 2 và 5, ta phải có d = 0 (số chia hết cho 10).
Khi đó S = 10·(100a + 10b + c) và điều kiện tổng các chữ số trở thành:
a + b + c + d = 18 → a + b + c = 18 (vì d = 0).
Ta cần tìm số nhỏ nhất thỏa mãn, vì vậy muốn a (chữ số hàng nghìn) càng nhỏ càng tốt, sau đó b và c càng nhỏ càng tốt.
- Nếu a = 1 → b + c = 17. Để b càng nhỏ, lấy b = 8, c = 9 (vì c ≤ 9).
- Các trường hợp a = 0 không cho số 4 chữ số, a ≥ 2 sẽ tạo số lớn hơn.
Vậy số thỏa mãn là 1890. Kiểm tra:
• 1890 ÷ 2 = 945 (chia hết)
• 1890 ÷ 5 = 378 (chia hết)
• 1 + 8 + 9 + 0 = 18.
Do đó 1890 là đáp án duy nhất và là số nhỏ nhất.
2. Tư duy Thuật toán Scratch
- Bước 1: Khởi tạo biến
num = 1000 (số nhỏ nhất có 4 chữ số).
- Bước 2: Dùng vòng lặp
repeat until để lặp cho tới khi tìm được số thỏa mãn.
- Bước 3: Kiểm tra
num mod 10 = 0 (đảm bảo chia hết cho 2 và 5).
- Bước 4: Tách các chữ số:
- a = floor(num / 1000)
- b = floor((num mod 1000) / 100)
- c = floor((num mod 100) / 10)
- d = num mod 10
- Bước 5: Tính tổng
a + b + c + d. Nếu bằng 18 thì dừng vòng lặp; nếu không, tăng num lên 1 và tiếp tục.
- Bước 6: Khi vòng lặp dừng, hiển thị giá trị
num – đây là số cần tìm.
3. Nhóm khối Scratch cần dùng
Events 🟡: when green flag clicked – khởi động chương trình.
Variables 🟧: tạo biến num, a, b, c, d, found (boolean).
Control 🟠:
repeat until <found = true>
if <condition> then (điều kiện chia hết và tổng = 18)
else – tăng num lên 1.
Operators 🟢:
(num mod 10) = 0 – kiểm tra chia hết cho 10.
floor ( … ) – lấy phần nguyên để tách chữ số.
(a + b + c + d) = 18 – kiểm tra tổng.
- Toán tử logic
and để kết hợp các điều kiện.
Sensing 🩵: không cần, trừ khi muốn nhập giá trị ban đầu từ người dùng (có thể dùng
ask … and wait).
Các nhóm khối Scratch gợi ý:
khi bấm vào lá cờ xanh
hỏi [Nhập số liệu đề bài] và chờ
đặt [Ket_Qua v] thành (0)
lặp lại (trả lời) lần
((Ket_Qua) + (câu trả lời))
💡 Mẹo từ AI: Đảm bảo khởi tạo giá trị biến số bằng 0 trước khi bước vào vòng lặp!