Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมคำนวณจำนวนบล็อกที่ปูได้จากกระเบื้องสีใน Python

มีบล็อก n บล็อก คนงานปูกระเบื้องสีที่บล็อกที่หารด้วย 4 หรือ 2 ลงตัว แต่ไม่หารด้วย 42 ลงตัว หาจำนวนบล็อกที่ปูได้หากมีกระเบื้อง k แผ่น

ตัวอย่าง: k=16 → ผลลัพธ์ 32

ขั้นตอนการแก้ปัญหา

รูปแบบของบล็อกที่ปูได้ซ้ำทุก 42 บล็อก (LCM ของ 2,4,42) ในแต่ละรอบ 42 บล็อก มีบล็อกที่ปูได้ 20 บล็อก ใช้การหารเพื่อคำนวณ:

  1. quotient = k // 20, remainder = k % 20
  2. หาก remainder=0: ผลลัพธ์ = 42*quotient - 2
  3. มิฉะนั้น: ผลลัพธ์ = 42*quotient + 2*remainder
  4. โมดุลอ 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