PAT乙 1059 C語言競賽

2021-08-18 18:31:45 字數 1504 閱讀 9525

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

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

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

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

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

輸入格式:

輸入第一行給出乙個正整數n(<=10000),是參賽者人數。隨後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?

求解過程:

通過用空間換時間的方式來提高效率,首先開乙個10001大小的陣列arr,初始化為0,然後每輸入乙個id,就令arr[id]=i+1,其中i是輸入的順序,用乙個for迴圈即可完成。剩下的就按部就班,稍加注意輸出的時候要加上%04d以防止出現id為0001的輸出為1.

程式:

#include #include #include using namespace std;

int stu[100001] = ; // 以id為下標,排名為值

int visited[100001] = ; // 記錄訪問與否

int isprimenum(int x) // 求是否為素數

int main(int argc, char const *argv)

cin >> k;

for (int i = 0; i < k; i++)

visited[id] = 1; // 將該點置為1,表示已訪問

} }return 0;

}

PAT 乙 1059 C語言競賽 20 分

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

PAT 乙級 1059 C語言競賽

題目 輸入樣例 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 ch...

PAT 乙等 1059 C語言競賽 C語言

時間限制 200 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 chen,yue c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0.冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1.排名...