比赛配对问题|豆包MarsCode AI刷题

63 阅读1分钟

1.题目

2.思路

result存放比赛次数,通过一个循环不断修改队伍数n,当前队伍数为奇数时,比赛次数+= (n - 1) / 2,修改n(n - 1) / 2 + 1,当队伍数为偶数时,比赛次数+= n / 2,修改nn / 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)