Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình đếm số trận đấu đã chơi trong giải đấu bằng Python

Giả sử chúng ta có một số n. Vì vậy, có n số đội trong một giải đấu có một số quy tắc -

  • Nếu số đội hiện tại là chẵn, thì mỗi đội sẽ được hợp nhất với một đội khác. Và có tổng cộng (n / 2) trận đấu được diễn ra, từ đó (n / 2) đội chiến thắng sẽ đi tiếp vào vòng tiếp theo.

  • Nếu số đội là số lẻ, thì một đội di chuyển ngẫu nhiên trong giải đấu, và phần còn lại sẽ được hợp nhất. Vì vậy, tổng số (n-1) / 2 trận đấu đã được diễn ra và (n-1) / 2 + 1 đội được chuyển vào vòng tiếp theo với tư cách đội chiến thắng.

Chúng tôi phải tìm tổng số trận đấu đã chơi để chúng tôi có được người chiến thắng cuối cùng.

Vì vậy, nếu đầu vào là n =10, thì đầu ra sẽ là 9 vì

  • Ban đầu sẽ có 5-5 bộ phận, trong số đó 5 người sẽ đủ điều kiện

  • Bây giờ chuyển một đội vào trò chơi và chia 2-2 đội, như vậy 3 đội sẽ đủ điều kiện

  • Bây giờ, hãy chuyển một đội vào trò chơi và chia 1-1 đội, như vậy 2 đội sẽ đủ điều kiện

  • Chia 1-1 và một người sẽ đủ điều kiện là người chiến thắng.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • ans:=0

  • trong khi n không giống với 1, làm

    • f:=tầng của (n / 2)

    • phần còn lại:=n mod 2

    • ans:=ans + f

    • n:=f + phần còn lại

  • trả lại ans

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

10

Đầu ra

9