Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Số ô có thể đặt gạch theo quy tắc chia hết cho 2 hoặc 4 nhưng không chia hết cho 42 trong Python

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