Săn áo phông
Đề bài
Mô tả
Trong một kỳ thi lập trình, top 25 người dẫn đầu cùng với 25 người được chọn ngẫu nhiên trong top 500 sẽ nhận được áo phông kỷ niệm. Bạn không lọt vào top 25 nhưng đứng ở vị trí trong top 500.
Danh sách 25 người may mắn được chọn theo đoạn giả mã sau, trong đó là số điểm của người thắng vòng loại đang diễn ra:
i := (s div 50) mod 475
lặp lại 25 lần:
i := (i * 96 + 42) mod 475
in ra (26 + i)
Ở đây "div" là phép chia lấy nguyên, "mod" là phép chia lấy dư. Đoạn giả mã in ra 25 số nguyên phân biệt nằm trong đoạn , đó chính là các vị trí được nhận áo. Người ở vị trí nhận được áo khi và chỉ khi xuất hiện trong 25 số này.
Bạn đang dẫn đầu vòng loại với điểm và cho rằng chỉ cần đạt ít nhất điểm là đủ để chiến thắng. Bạn có thể thực hiện các lần hack:
- Mỗi lần hack thành công cộng thêm điểm.
- Mỗi lần hack thất bại trừ đi điểm.
Bạn được thực hiện số lần hack thành công và thất bại tùy ý. Điểm cuối cùng của bạn phải đạt ít nhất (để thắng vòng loại) và đồng thời phải làm cho vị trí được nhận áo (điểm cuối cùng đóng vai trò trong giả mã). Hãy tìm số lần hack thành công ít nhất cần thực hiện. Dữ liệu đảm bảo luôn có lời giải.
Dữ liệu vào
Một dòng duy nhất chứa ba số nguyên , , : vị trí của bạn trong top 500, số điểm hiện tại, và số điểm tối thiểu bạn cho là đủ để thắng.
Dữ liệu ra
In ra một số nguyên duy nhất: số lần hack thành công ít nhất cần thực hiện.
Ràng buộc
Ví dụ
| Input | Output | Giải thích |
|---|---|---|
| 239 10880 9889 | 0 | Với điểm, đoạn giả mã in ra các vị trí trong đó có , nên không cần hack lần nào. |
| 26 7258 6123 | 2 | Thực hiện 2 hack thành công và 1 hack thất bại để về điểm, khi đó vị trí được nhận áo. |
| 493 8000 8000 | 24 | Cần tới 24 hack thành công để về điểm. |
| 101 6800 6500 | 0 | Chỉ cần 6 hack thất bại (không cần hack thành công) để về điểm, vừa đủ thắng và cũng được nhận áo. |
Bình luận