1059 C語言競賽 20 分

2021-10-22 18:47:27 字數 1771 閱讀 5929

c 語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽:

給定比賽的最終排名以及一系列參賽者的 id,你要給出這些參賽者應該獲得的獎品。

輸入第一行給出乙個正整數 n(≤10^​4),是參賽者人數。隨後 n 行給出最終排名,每行按排名順序給出一位參賽者的 id(4 位數字組成)。接下來給出乙個正整數 k 以及 k 個需要查詢的 id。

對每個要查詢的 id,在一行中輸出id: 獎品,其中獎品或者是mystery award(神秘大獎)、或者是minion(小黃人)、或者是chocolate(巧克力)。如果所查 id 根本不在排名裡,列印are you kidding?(耍我呢?)。如果該 id 已經查過了(即獎品已經領過了),列印id: checked(不能多吃多占)。

6

1111

6666

8888

1234

5555

0001

68888

0001

1111

2222

8888

2222

8888

: minion

0001

: chocolate

1111

: mystery award

2222

: are you kidding?

8888

: checked

2222

: are you kidding?

思路:

由於時間限制200ms,所以string + 暴力肯定超時!!!

因此採用陣列下標的方式:

設定num陣列(陣列容量要足夠大,陣列下標相當於id),然後陣列內容是該id的排名

另外在設定乙個flag陣列,判斷該id有無重複領取獎品!

#include

#include

using

namespace std;

const

int n =

1e4;

int num[n]

;bool flag[n]=;

//判斷該id有無重複領取獎品

//判斷素數

bool

fun1

(int x)

return

true;}

intmain()

scanf

("%d"

,&k)

;for

(int i =

0; i < k; i++)if

(!flag[temp]

)elseif(

fun1

(num[temp]))

else

}else

}return0;

}

注:

碰到不足4位的情況可以採用,c語言原生自帶的printf函式,裡面使用%.4d不足4位前面補零

判斷素數函式,如果採用x / 2或sqrt(x)都可以,但是如果採用sqrt(x)需要在加一---->sqrt(x) + 1否則測試點2答案錯誤!!

sqrt(x) + 1 速度比 x / 2快!!!!

1059 C語言競賽(20分)

c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 排名為素數的學生將贏得最好的獎品 小黃人玩偶!其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的id,你要給出這些參賽者應該獲得的獎品。...

1059 C語言競賽 (20 分)

1059 c語言競賽 20 分 c 語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 給定比賽的最終排名以及一系列參賽者的 id,你要給出這些參賽者應該獲得的獎品。輸入第一行給出乙個正整數 n 10 4 是參賽者人數。隨後 n 行給出最終排名,每行按...

1059 C語言競賽 20 分

c 語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0 冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1 排名為素數的學生將贏得最好的獎品 小黃人玩偶!2 其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的 id,你要給出這些參賽者...