Giả sử ta có số n đội thi đấu. Quy tắc giải đấu:
- Nếu số đội chẵn: mỗi đội ghép đôi, chơi
n/2trận,n/2đội thắng lên vòng sau. - Nếu số đội lẻ: 1 đội tự động lên vòng, phần còn lại ghép đôi, chơi
(n-1)/2trận,(n-1)/2 + 1đội lên vòng sau.
Tìm tổng số trận đấu để ra được vô địch.
Ví dụ: n = 10, kết quả là 9.
Giải thuật
ans := 0- While
n != 1:f := n // 2remainder := n % 2ans += fn := f + remainder
- Trả về
ans
Ví dụ (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))
Input
10
Output
9