c 語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽:
給定比賽的最終排名以及一系列參賽者的 id,你要給出這些參賽者應該獲得的獎品。
輸入第一行給出乙個正整數 n(≤10e+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: minion0001: chocolate
1111: mystery award
2222: are you kidding?
8888: checked
2222: are you kidding?
看著n=10^4的大小想嘗試用o(n^2)的暴力解法:
#include#includeconst
int max=10010
;int prime[max],num=0
;bool pp[max]=;
struct
personp[
10010
];void init(int
n) }
}}int
main()
char temp[5
]; scanf("%d
",&nn);
for(int i=1;i<=nn;i++)
else
break
; }
}if(j==n+1)printf("
are you kidding?\n");
}return0;
}
提交時間
狀態分數
題目編譯器
耗時使用者
2019/2/2 00:49:37
部分正確
141059
c++ (g++)
3 ms
argentina_wu lei
測試點結果
耗時記憶體
0答案正確
3 ms
512 kb
1執行超時
0 ms
0 kb
2執行超時
0 ms
0 kb
3答案正確
3 ms
512 kb
只得了14/20分,所以此類題還是不能抱有僥倖,需要雜湊對映的思路:
#includeconstint maxn=10010
;int i[maxn]=;//
chushihuawei0
char a[5][20]=;
bool isprime(int
x)int
main()
intm,query;
scanf("%d
",&m);
for(int i=1;i<=m;i++)
return0;
}
書中給出的上述**既簡短,思路也很好(預設為「are you kidding?」)
1059 C語言競賽
c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0.冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1.排名為素數的學生將贏得最好的獎品 小黃人玩偶!2.其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的id,你要給出這些參賽者應該...
1059 C語言競賽
c語言競賽是浙江大學計算機學院主持的乙個歡樂的競賽。既然競賽主旨是為了好玩,頒獎規則也就制定得很滑稽 0.冠軍將贏得乙份 神秘大獎 比如很巨大的一本學生研究 集 1.排名為素數的學生將贏得最好的獎品 小黃人玩偶!2.其他人將得到巧克力。給定比賽的最終排名以及一系列參賽者的id,你要給出這些參賽者應該...
1059 C語言競賽
1.解題思路 ran陣列標記每個id對應的排名,集合ss儲存所有已經詢問過的id 如果發現當前id已經出現在ss中,則輸出 checked 如果ran id 0 說明當前id不在排名列表中,所以輸出 are you kidding?如果ran id 為1則輸出 minion 如果ran id 為素數...