Giả sử có n khối trên một con đường và một công nhân đang xếp những viên gạch màu lên các khối. Người công nhân đang xếp các khối theo một cách, sao cho nếu một số khối trong đường dẫn chia hết cho 4 hoặc / và 2 nhưng không phải là 42, anh ta sẽ đặt một viên gạch màu ở đó. Chúng ta phải tìm ra số khối mà anh ta có thể bao phủ nếu anh ta đã bắt đầu với k số ô màu.
Vì vậy, nếu đầu vào là k =16, thì đầu ra sẽ là 32.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- MOD =10 ^ 9 + 7
- thương số:=giá trị sàn của (k / 20)
- phần còn lại:=k mod 20
- nếu phần còn lại bằng 0, thì
- return ((42 * quotient - 2) mod MOD)
- nếu không,
- return ((42 * thương số + 2 * phần dư) mod MOD)
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
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))
Đầu vào
16
Đầu ra
32