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

โปรแกรมนับจำนวนแมตช์ในทัวร์นาเมนต์ (Python)

โจทย์

มีทีม n ทีม กติกา:

  • คู่: ทีมคู่ → แมตช์ n/2, ผ่าน n/2
  • คี่: ผ่าน 1 ทีมอัตโนมัติ แมตช์ (n-1)/2, ผ่าน (n-1)/2 + 1
หาจำนวนแมตช์รวมจนเหลือแชมป์ 1 ทีม

ตัวอย่าง: n = 10 → Output: 9

อัลกอริธึม

  1. วนลูปจน n == 1
  2. แต่ละรอบ: f = n//2, remainder = n%2
  3. สะสม ans += f, อัปเดต n = f + remainder

โค้ด Python


def solve(n):
    ans = 0
    while n != 1:
        f = n // 2
        remainder = n % 2
        ans += f
        n = f + remainder
    return ans

n = 10
print(solve(n))  # Output: 9

Input / Output

Input:  10
Output: 9