Test Message

d461: 班際籃球賽

內容

又到了一年一度班際籃球賽的季節了,今年有 10 個班級組隊參加,比賽採單淘汰制,學校所排的賽程如下:

img1

為了公平起見,學校在排賽程時,有兩個規定:

  1. 每個隊伍要取得冠軍所需贏得的比賽場數的差異不能大於一場。例如 101 贏 3 場可以獲得冠軍,但是 102 卻必須贏 4 場才可以獲得冠軍,其差異沒有大於一場。

  2. 每一場比賽的兩個隊伍必須由兩個隊數差異不大於一隊的組別所產生。例如 101, 102, 103 這三隊所產生的優勝隊伍必須和 104, 105 這兩隊所產生的隊伍比賽,兩邊所包含的隊伍數差異不大於一隊。

在這兩個規則下,請幫忙計算如果有 n 個隊伍報名參賽,至少必須舉辦幾場比賽才能產生一個冠軍隊伍。


輸入

輸入只有一行,包含一個整數 n,代表報名參賽的隊伍數目。

10

輸出

請輸出一個整數,代表至少必須舉辦幾場比賽。

9


解題思路

題目中的規定並不是很重要,本題重點是單淘汰制,所以每比一場賽,就會有一組被淘汰。

而要產生冠軍,就只能將其他組都淘汰剩下一組,那根據上面一場比賽一個淘汰的邏輯,要產生冠軍的總賽數 = 總組數 - 1,所以將輸入 - 1 輸出即可。


完整程式碼

AC (2ms, 100KB)
#include <stdio.h>

int main()
{
int n;
scanf(" %d", &n);
printf("%d", n - 1);
return 0;
}