มีบล็อก n บล็อก คนงานปูกระเบื้องสีที่บล็อกที่หารด้วย 4 หรือ 2 ลงตัว แต่ไม่หารด้วย 42 ลงตัว หาจำนวนบล็อกที่ปูได้หากมีกระเบื้อง k แผ่น
ตัวอย่าง: k=16 → ผลลัพธ์ 32
ขั้นตอนการแก้ปัญหา
รูปแบบของบล็อกที่ปูได้ซ้ำทุก 42 บล็อก (LCM ของ 2,4,42) ในแต่ละรอบ 42 บล็อก มีบล็อกที่ปูได้ 20 บล็อก ใช้การหารเพื่อคำนวณ:
quotient = k // 20,remainder = k % 20- หาก remainder=0: ผลลัพธ์ = 42*quotient - 2
- มิฉะนั้น: ผลลัพธ์ = 42*quotient + 2*remainder
- โมดุลอ 10^9+7
ตัวอย่างโค้ด 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)) # ผลลัพธ์: 32
อินพุตตัวอย่าง
16
เอาต์พุตตัวอย่าง
32