1059 C語言競賽 20分

2022-07-25 09:03:09 字數 2231 閱讀 6652

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?

這個題目用雜湊來做非常簡單,但用查詢法也能寫,如果超時可能是查詢沒處理好,用二分法可以降低複雜度。

二分查詢法來寫,自己對查詢又加強了了解。

#include #include

#include

#include

using

namespace

std;

struct

nodestu[

10010

];bool

cmp(node a, node b)

bool isp(int a)

int find(node* p, string a,int n)

if ((p + n - 1)->id == a)return n - 1;//

不知道為啥查不到末尾,只好手動新增末尾驗證。

return -1;}

intmain()

sort(stu, stu+num-1,cmp);//

先排個序,這樣好查詢。

cin >>want_num;

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

else

cout

<< stu[j].id << ": "

<< "

checked

"<}

else

//未找到該id

cout << want_find << ": "

<< "

are you kidding?

"<}

return0;

}

用雜湊來寫的**,空間換時間策略。(很簡單,不是嗎?)

#include #include

using

namespace

std;

bool isp(int

a) int

main() ;//

第乙個數值記錄排名,沒有id則排名為0,第二個數值記錄是否領取禮物;

intnum, want_num;

intwant_find;

cin >>num;

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

cin >>want_num;

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

else

if (isp(all[want_find][0

]))

else

all[want_find][

1] = 1;//

表示已經領取禮物

}

else

}else

}return0;

}

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