1688.試合の試合数
ゲーム内のチームの数を表す整数nを指定します。コンテストは独自の形式に従います。
現在のチーム数が偶数の場合、各チームは別のチームとペアになります。合計n / 2のゲームがプレイされ、次のラウンドに参加するためにn / 2のチームが生成されます。
現在のチーム数が奇数の場合、ランダムにバイバイが行われ、1つのチームが昇格し、残りのチームが一致します。合計(n-1)/ 2ゲームがプレイされ、(n-1)/ 2 +1チームが生成されて次のラウンドに入ります。
勝ったチームが決定されるまでにゲームで行われた試合の数を返します。
示例 1:
输入:n = 7
输出:6
解释:比赛详情:
- 第 1 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 2 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 3 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 3 + 2 + 1 = 6
示例 2:
输入:n = 14
输出:13
解释:比赛详情:
- 第 1 轮:队伍数 = 14 ,配对次数 = 7 ,7 支队伍晋级。
- 第 2 轮:队伍数 = 7 ,配对次数 = 3 ,4 支队伍晋级。
- 第 3 轮:队伍数 = 4 ,配对次数 = 2 ,2 支队伍晋级。
- 第 4 轮:队伍数 = 2 ,配对次数 = 1 ,决出 1 支获胜队伍。
总配对次数 = 7 + 3 + 2 + 1 = 13
提示:
1 <= n <= 200
コード:
int numberOfMatches(int n){
int sum = 0;
while(n>1)
{
if(n%2==0)
{
sum=sum+n/2;
n=n/2;
continue;
}
else
{
sum=sum+(n-1)/2;
n=(n-1)/2+1;
continue;
}
}
return sum;
}