Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 토너먼트에서 플레이한 경기 수를 계산하는 프로그램

<시간/>

숫자 n이 있다고 가정합니다. 따라서 토너먼트에는 몇 가지 규칙이 있는 n개의 팀이 있습니다 -

  • 현재 팀 수가 짝수이면 각 팀이 다른 팀과 병합됩니다. 그리고 총 (n/2) 경기가 진행되며, 그 중 (n/2) 승자가 다음 라운드로 진출합니다.

  • 팀 수가 홀수인 경우 토너먼트에서 한 팀이 무작위로 이동하고 나머지 팀이 병합됩니다. 따라서 총 (n-1)/2 경기가 진행되고 (n-1)/2+1 팀이 승자로 다음 라운드로 이동합니다.

최종 승자를 얻으려면 총 경기 수를 찾아야 합니다.

따라서 입력이 n =10과 같으면 출력은 9가 됩니다.

  • 처음에는 5-5개의 디비전이 있으며 그 중 5개가 자격을 갖추게 됩니다.

  • 이제 한 팀을 게임에 전달하고 2-2 팀을 나누어 3팀이 자격을 얻습니다.

  • 이제 한 팀을 게임에 넘기고 1-1 팀을 나누어 2팀이 자격을 얻습니다.

  • 1-1로 나누어 1명이 승자로 결정됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 답변 :=0

  • n이 1과 같지 않은 동안 수행

    • f :=(n/2)의 바닥

    • 나머지 :=n 모드 2

    • ans :=ans + f

    • n :=f + 나머지

  • 반환

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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

입력

10

출력

9