Bỏ qua để đến nội dung

Dạng 6: Mô phỏng theo từng ngày

Trang này thuộc chuyên đề Các dạng toán thường gặp trong đề thi Tin học trẻ Bảng A.

Câu chuyện diễn ra qua nhiều ngày (nhiều lượt, nhiều lần biến đổi). Mỗi ngày số lượng thay đổi theo một quy tắc: chị cho em 1 viên bi, An ăn một nửa số kẹo, ngày lẻ bố cho tiền, ngày chẵn mẹ cho tiền… Câu hỏi là “sau N ngày thì thế nào” hoặc “sau bao nhiêu ngày thì đạt được điều gì”.

  1. Chọn biến: mỗi số thay đổi theo ngày là một biến (số bi của chị, số bi của em, số tiền…), thêm một biến đếm ngày.
  2. Mỗi vòng lặp là một ngày. Trong vòng lặp, cập nhật các biến đúng thứ tự đề kể.
  3. Chọn vòng lặp theo câu hỏi:
Đề hỏiVòng lặp
Sau N ngày thì thế nào?lặp lại (N)
Sau bao nhiêu ngày thì đạt…?lặp lại cho đến khi <> và đếm số vòng
  1. Ngày chẵn, ngày lẻ khác nhau: kiểm tra <((ngày) chia lấy dư (2)) = (1)> là ngày lẻ.
  2. Khi số ngày rất lớn (hàng tỉ), mô phỏng từng ngày phải lặp hàng tỉ vòng. Hãy tìm: lúc nào mọi thứ không thay đổi nữa (chị hết bi, An hết kẹo) để dừng sớm, hoặc chu kỳ lặp lại (mỗi 2 ngày, mỗi tuần) để nhảy cóc qua nhiều ngày một lúc.
  3. Chạy tay bằng bảng: mỗi dòng là một ngày, mỗi cột là một biến.

Đề thi thật: Bảng A 2023 - Vòng khu vực (miền Bắc, miền Nam), Bài 2.

Chị Cam có A viên bi, em Dino có B viên bi. Mỗi ngày chị cho em đúng 1 viên, đến khi chị hết bi thì thôi. Hỏi đến ngày thứ N, số bi hai chị em chênh nhau bao nhiêu? Nhập A, B, N trên 3 dòng (1 ≤ A, B, N ≤ 109). Ví dụ: 7, 4, 1 thì nói 1; 4, 7, 1 thì nói 5; 2, 4, 3 thì nói 6.

Cách 1 - mô phỏng từng ngày. Mỗi ngày, nếu chị còn bi thì chị bớt 1, em thêm

  1. Cuối cùng lấy khoảng cách giữa hai số.
khi bấm vào @greenFlag
hỏi [] và đợi
đặt [bi của chị v] thành (trả lời)
hỏi [] và đợi
đặt [bi của em v] thành (trả lời)
hỏi [] và đợi
đặt [số ngày v] thành (trả lời)
lặp lại (số ngày)
nếu <(bi của chị) > (0)> thì
  thay đổi [bi của chị v] một lượng (-1)
  thay đổi [bi của em v] một lượng (1)
end
end
nói ([giá trị tuyệt đối v] của ((bi của chị) - (bi của em)))

Chạy tay với ví dụ 3 (A = 2, B = 4, N = 3):

NgàyChị còn bi?bi của chịbi của em
Ban đầu24
1Có15
2Có06
3Không06

Chênh lệch 6 − 0 = 6, đúng với đề.

Cách 2 - không cần lặp. Với N tới 109, cách 1 phải lặp một tỉ vòng. Nhìn bảng chạy tay: mỗi ngày chị cho 1 viên nhưng không thể cho quá số bi chị có, nên số bi chị đã cho là số nhỏ hơn trong hai số A và N.

khi bấm vào @greenFlag
hỏi [] và đợi
đặt [bi của chị v] thành (trả lời)
hỏi [] và đợi
đặt [bi của em v] thành (trả lời)
hỏi [] và đợi
đặt [số ngày v] thành (trả lời)
nếu <(số ngày) < (bi của chị)> thì
đặt [đã cho v] thành (số ngày)
nếu không thì
đặt [đã cho v] thành (bi của chị)
end
nói ([giá trị tuyệt đối v] của (((bi của chị) - (đã cho)) - ((bi của em) + (đã cho))))
A, B, Nđã choChị cònEm cóNói ra
7, 4, 11651
4, 7, 11385
2, 4, 32066

Đề thi thật: Bảng A 2025 - Huyện Gia Viễn, Ninh Bình, Bài 3.

Nam muốn mua một món đồ chơi giá N đồng nên tiết kiệm tiền bố mẹ cho. Ngày thứ nhất bố cho Nam X đồng, ngày thứ hai mẹ cho Y đồng, ngày thứ ba bố cho X đồng… cứ ngày lẻ bố cho X đồng, ngày chẵn mẹ cho Y đồng. Hỏi sớm nhất sau bao nhiêu ngày Nam có ít nhất N đồng để mua món đồ chơi? Nhập X, Y, N trên 3 dòng (X, Y, N < 109). Ví dụ: X = 5, Y = 2, N = 6 thì nói 2; X = 5, Y = 2, N = 15 thì nói 5.

Cách 1 - mô phỏng. Đề hỏi “sau bao nhiêu ngày” nên dùng lặp lại cho đến khi <>: lặp cho đến khi số tiền không còn nhỏ hơn N, mỗi vòng là một ngày.

khi bấm vào @greenFlag
hỏi [] và đợi
đặt [tiền bố cho v] thành (trả lời)
hỏi [] và đợi
đặt [tiền mẹ cho v] thành (trả lời)
hỏi [] và đợi
đặt [giá đồ chơi v] thành (trả lời)
đặt [ngày v] thành (0)
đặt [tiền v] thành (0)
lặp lại cho đến khi <không phải <(tiền) < (giá đồ chơi)>>
thay đổi [ngày v] một lượng (1)
nếu <((ngày) chia lấy dư (2)) = (1)> thì
  thay đổi [tiền v] một lượng (tiền bố cho)
nếu không thì
  thay đổi [tiền v] một lượng (tiền mẹ cho)
end
end
nói (ngày)

Chạy tay với X = 5, Y = 2, N = 15:

ngàyAi chotiềnĐủ 15 chưa?
1Bố, 55Chưa
2Mẹ, 27Chưa
3Bố, 512Chưa
4Mẹ, 214Chưa
5Bố, 519Đủ, nói 5

Cách 2 - nhảy cóc theo từng cặp ngày. Nếu X = Y = 1 và N gần 109 thì cách 1 phải lặp gần một tỉ vòng. Nhưng cứ 2 ngày Nam lại có thêm đúng (X + Y) đồng. Ta nhảy qua các cặp ngày trọn vẹn mà Nam vẫn chưa đủ tiền:

  • Số cặp đó là làm tròn xuống của ((N − 1) ÷ (X + Y)), vì sau các cặp này số tiền không quá N − 1, tức là vẫn thiếu.
  • Thêm một cặp nữa thì số tiền vượt N − 1, tức là đủ. Vậy sau khi nhảy cóc, chỉ cần mô phỏng nhiều nhất 2 ngày nữa.
khi bấm vào @greenFlag
hỏi [] và đợi
đặt [tiền bố cho v] thành (trả lời)
hỏi [] và đợi
đặt [tiền mẹ cho v] thành (trả lời)
hỏi [] và đợi
đặt [giá đồ chơi v] thành (trả lời)
đặt [số cặp v] thành ([làm tròn xuống v] của (((giá đồ chơi) - (1)) / ((tiền bố cho) + (tiền mẹ cho))))
đặt [ngày v] thành ((số cặp) * (2))
đặt [tiền v] thành ((số cặp) * ((tiền bố cho) + (tiền mẹ cho)))
lặp lại cho đến khi <không phải <(tiền) < (giá đồ chơi)>>
thay đổi [ngày v] một lượng (1)
nếu <((ngày) chia lấy dư (2)) = (1)> thì
  thay đổi [tiền v] một lượng (tiền bố cho)
nếu không thì
  thay đổi [tiền v] một lượng (tiền mẹ cho)
end
end
nói (ngày)

Chương trình giống cách 1, chỉ khác là ngày và tiền không bắt đầu từ 0 mà bắt đầu từ chỗ đã nhảy cóc tới. Với ví dụ X = 5, Y = 2, N = 15:

BướcTínhKết quả
Số cặplàm tròn xuống của (14 ÷ 7)2
Nhảy cóc2 cặp = 4 ngày, 2 × 7 = 14 đồnghết ngày 4, có 14 đồng
Vòng lặpngày 5 bố cho 5 đồng, có 19 đồngđủ, nói 5

Độ khó: 🌶️ dễ, 🌶️🌶️ trung bình, 🌶️🌶️🌶️ khó. Dòng “Đề thi thật” cho biết bài lấy từ đề nào (bấm vào để xem nguyên đề). Các đề bài được viết gọn lại, tuy nhiên vẫn giữ nguyên yêu cầu và ví dụ của đề gốc.

Đề thi thật: Bảng A 2025 - Vòng sơ khảo TP Hà Nội, Bài 2.

Máy bắn lần lượt A viên bi đỏ rồi B viên bi xanh, rồi lại A viên đỏ, B viên xanh… Trong N viên đầu tiên có bao nhiêu viên đỏ? Nhập A, B, N trên 3 dòng (A, B ≤ 105; N ≤ 109; 70 điểm có A, B, N ≤ 100).

NhậpNói raGiải thích
3
2
9
6Đ Đ Đ X X Đ Đ Đ X.
1
1
4
2Đ X Đ X.
2
3
8
4Đ Đ X X X Đ Đ X.
Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 6.2: Mỗi ngày ăn một nửa số kẹo 🌶️🌶️

Phần tiêu đề “Bài 6.2: Mỗi ngày ăn một nửa số kẹo 🌶️🌶️”

Đề thi thật: Bảng A 2026 - Tỉnh Bắc Ninh, Bài 2.

An có N viên kẹo. Mỗi ngày An ăn nhiều nhất có thể nhưng không quá một nửa số kẹo đang có; nếu chỉ còn đúng 1 viên thì An ăn nốt. Hỏi đến hết ngày thứ K, An đã ăn tổng cộng bao nhiêu viên? Nhập N, K trên 2 dòng (1 ≤ N, K ≤ 1012).

NhậpNói raGiải thích
10
3
8Ăn 5 (còn 5), ăn 2 (còn 3), ăn 1 (còn 2).
5
10
5An ăn hết kẹo sau vài ngày.
Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Đề thi thật: Bảng A 2024 - Quận Nam Từ Liêm, Hà Nội, Câu 4.

Với số K: nếu K chia hết cho 6 thì thay K bằng K ÷ 6, nếu không thì thay K bằng 3 × K. Cần bao nhiêu lần biến đổi để K bằng 1? Nếu không thể thì nói −1. Nhập K (1 ≤ K ≤ 109).

NhậpNói raGiải thích
12312 → 2 → 6 → 1.
10-1
Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 6.4: Truyền tin qua các trạm 🌶️🌶️

Phần tiêu đề “Bài 6.4: Truyền tin qua các trạm 🌶️🌶️”

Đề thi thật (phỏng theo): Bảng A 2026 - Thành phố Hồ Chí Minh (Bán kết), Bài 1.

Giá trị dữ liệu đi qua K trạm, mỗi trạm biến đổi giá trị cũ thành (giá trị cũ ÷ 2 − 3). Biết giá trị nhận được ở trạm cuối là N, tìm giá trị ban đầu. Nhập N (1 ≤ N ≤ 20) và K (1 ≤ K ≤ 40) trên 2 dòng. (Đề gốc cho K tới 1000, khi đó kết quả quá lớn so với số Scratch tính chính xác được.)

NhậpNói raGiải thích
8
3
106Tính ngược: (8 + 3) × 2 = 22; (22 + 3) × 2 = 50; (50 + 3) × 2 = 106.
Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Thầy cô và các em muốn mua bộ bài giải và code của các bài tập trong chuyên đề này vui lòng liên hệ tác giả qua Zalo 0972465159 hoặc Facebook. Bộ bài giải được tặng miễn phí cho thầy cô đã mua 7 chuyên đề Scratch hoặc 150 bài tập Scratch. Xin cảm ơn.