Skip to content

1059 C语言竞赛

Statement

Metadata

  • 作者: CHEN, Yue
  • 单位: 浙江大学
  • 代码长度限制: 16 KB
  • 时间限制: 200 ms
  • 内存限制: 64 MB

C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:

  • 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
  • 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
  • 2、其他人将得到巧克力。

给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。

输入格式

输入第一行给出一个正整数 N\le 10^4),是参赛者人数。随后 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
6
8888
0001
1111
2222
8888
2222

输出样例

8888: Minion
0001: Chocolate
1111: Mystery Award
2222: Are you kidding?
8888: Checked
2222: Are you kidding?

Solution

#include <bits/stdc++.h>
using namespace std;
int isPrime(int x) {
    int flag;
    int n;
    if (x <= 1)
        flag = 0;
    else if (x == 2)
        flag = 1;
    else if (x == 3)
        flag = 1;
    else if (x % 2 == 0)
        flag = 0;
    else {
        for (n = 3; n <= (x - 1); n += 2) {
            if (x % n == 0) {
                flag = 0;
                break;
            } else {
                flag = 1;
            }
        }
    }
    return flag;
}
int main() {
    map<string, string> q;
    string s;
    int n, i;
    cin >> n;
    for (i = 0; i < n; i++) {
        cin >> s;
        if (i) {
            if (isPrime(i + 1))
                q[s] = "Minion";
            else
                q[s] = "Chocolate";
        } else
            q[s] = "Mystery Award";
    }
    int t;
    cin >> t;
    while (t--) {
        cin >> s;
        cout << s << ": ";
        if (q[s] == "")
            cout << "Are you kidding?\n";
        else {
            cout << q[s] << endl;
            q[s] = "Checked";
        }
    }
}

Last update: May 4, 2022
Back to top