Có n ô trên đường. Người công đặt gạch lên ô i nếu i chia hết cho 2 hoặc 4 nhưng không chia hết cho 42. Cho k gạch, tìm số ô có thể đặt (giả sử đường đủ dài).
Ví dụ: k=16 → kết quả 32.
Giải thuật
- Mỗi chu kỳ 20 ô có 21 ô thỏa mãn? Thực tế quy luật: cứ 42 ô thì có 20 ô hợp lệ? Mã sử dụng công thức: quotient = k // 20, remainder = k % 20.
- Nếu remainder == 0: (42 * quotient - 2) mod MOD.
- Ngược lại: (42 * quotient + 2 * remainder) mod MOD.
Ví dụ mã Python
def solve(k):
MOD = 10**9 + 7
quotient = k // 20
remainder = k % 20
if remainder == 0:
return (42 * quotient - 2) % MOD
else:
return (42 * quotient + 2 * remainder) % MOD
print(solve(16)) # Output: 32
Đầu vào
16
Đầu ra
32