1.题目
2.思路
用result存放比赛次数,通过一个循环不断修改队伍数n,当前队伍数为奇数时,比赛次数+= (n - 1) / 2,修改n为(n - 1) / 2 + 1,当队伍数为偶数时,比赛次数+= n / 2,修改n为n / 2,直到n为零,说明不再需要比赛,跳出循环。
3.代码
def solution(n: int) -> int:
# write code here
result = 0
# 当队伍数为1时不需要比赛,停止循环
while n != 1:
# 队伍数为偶数
if n % 2 == 0:
result += n / 2
n = n / 2
# 队伍数为奇数
else:
result += (n - 1) / 2
n = (n - 1) / 2 + 1
return result
if __name__ == '__main__':
print(solution(7) == 6)
print(solution(14) == 13)
print(solution(1) == 0)