藍橋杯歷屆試題 贏球票(模擬)

2021-09-20 04:01:41 字數 1188 閱讀 4838

某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。

主持人拿出 n 張卡片(上面寫著 1~n 的數字),打亂順序,排成乙個圓圈。

你可以從任意一張卡片開始順時針數數: 1,2,3…

如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。

直到再無法收穫任何卡片,遊戲結束。囊中卡片數字的和就是贏得球票的張數。

比如:卡片排列是:1 2 3

我們從1號卡開始數,就把1號卡拿走。再從2號卡開始,但數的數字無法與卡片對上,

很快數字越來越大,不可能再拿走卡片了。因此這次我們只贏得了1張球票。

還不算太壞!如果我們開始就傻傻地從2或3號卡片數起,那就一張卡片都拿不到了。

如果運氣好,卡片排列是 2 1 3

那我們可以順利拿到所有的卡片!

本題的目標就是:已知順時針卡片序列。

隨便你從**開始數,求最多能贏多少張球票(就是收入囊中的卡片數字之和)

輸入第一行乙個整數n(n<100),表示卡片數目

第二行 n 個整數,表示順時針排列的卡片

輸出一行,乙個整數,表示最好情況下能贏得多少張球票

樣例輸入

31 2 3

樣例輸出

1思路:n<=100,直接暴力模擬就好

#include

#include

#include

using namespace std;

vector a,b;

int vis[

105]

;int n,ans=-1

,x,cnt;

int main()

for(int i=

0;i<

3;i++)if

(b.size()

>1)

for(int i=

0;isize()

;i++

) maxt=

max(maxt,b[i]);

cnt+

=j; x=

(x+j-1)

%b.size()

;j=1;}

else

j++;}

ans=

max(ans,cnt);}

cout<

return0;

}

藍橋杯題目 贏球票

問題描述 某機構舉辦球票大獎賽。獲獎選手有機會贏得若干張球票。主持人拿出 n 張卡片 上面寫著 1 n 的數字 打亂順序,排成乙個圓圈。你可以從任意一張卡片開始順時針數數 1,2,3.如果數到的數字剛好和卡片上的數字相同,則把該卡片收入囊中,從下乙個卡片重新數數。直到再無法收穫任何卡片,遊戲結束。囊...

藍橋杯 歷屆試題 分糖果 模擬

歷屆試題 分糖果 時間限制 1.0s 記憶體限制 256.0mb 問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖...

藍橋杯歷屆試題 分糖果(模擬)

問題描述 有n個小朋友圍坐成一圈。老師給每個小朋友隨機發偶數個糖果,然後進行下面的遊戲 每個小朋友都把自己的糖果分一半給左手邊的孩子。一輪分糖後,擁有奇數顆糖的孩子由老師補給1個糖果,從而變成偶數。反覆進行這個遊戲,直到所有小朋友的糖果數都相同為止。你的任務是 在已知的初始糖果情形下,老師一共需要補...