1059 C語言競賽 20分 執行超時

2021-10-18 03:41:06 字數 1635 閱讀 2349

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

0、冠軍將贏得乙份「神秘大獎」(比如很巨大的一本學生研究**集……)。

1、排名為素數的學生將贏得最好的獎品 —— 小黃人玩偶!

2、其他人將得到巧克力。

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

輸入格式:

輸入第一行給出乙個正整數 n(≤10

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

輸出格式:

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

輸入樣例:

61111

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?

輸入分析

輸入n,隨後n行id

輸入k,隨後k行待查詢id

輸出分析

k行,每一行先是id: ,再是字串

整體思路

我的思路是利用乙個儲存體,儲存選手的id,排名,獎品,獎品領取狀態;在輸入成績時,將選手資訊儲存起來

接著是查詢k個id;通過結構體id判斷其獎品以及是否領取

完整**

#include

#include

using

namespace std;

struct stustu[

10001];

bool

isprime

(int t)

return1;

}int

main()

else

} cin>>k;

int id;

//要查詢id

for(i=

0;i(id==stu[j]

.id&&stu[j]

.flag!=1)

}if(j==n)

}return0;

}

注意事項

測試點1,剛提交的時候並沒有成功,顯示執行超時

但反覆交了幾次,時而全正確,時而超時,可能o(n²)比較牽強

另外注意素數的判斷,以及輸出時利用printf("%04d")來滿足四位數的要求

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,你要給出這些參賽者...