C语言竞赛
题目描述
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
(不能多吃多占)。
输入样例
1 | 6 |
输出样例
1 | 8888: Minion |
问题解决
解题思想
用散列思想处理,ID作为数组下标,相应内容存入该ID的排名。分情况输出即可,存在排名中的ID若已输出过,要做标记,下次再遇到该ID需要输出ID: Checked
,不存在排名中的相同ID每次输出的是一样的,都是ID:Are you kidding?
。
代码示例(C/C++)
1 |
|
题目来源:PAT乙级1059
作者:CHEN, Yue
单位:浙江大学