AcWing 1606. C 语言竞赛
原题链接
简单
作者:
王小强
,
2021-02-27 18:37:52
,
所有人可见
,
阅读 464
根据题目意思模拟
#include <iostream>
#include <unordered_map>
#include <unordered_set>
using namespace std;
int n, k, id;
unordered_map<int, int> ranking;
unordered_set<int> seen;
// 判断一个数是否是质数又称素数? (只能被1和本身的整除的数)
bool isPrime(int x) {
for (int i = 2; i * i <= x; ++i)
if (!(x % i)) return false;
return true;
}
int main(void) {
scanf("%d", &n);
for (int i = 1; i <= n; ++i) {
scanf("%d", &id);
ranking[id] = i;
}
scanf("%d", &k);
while (k--) {
scanf("%d", &id);
if (!ranking.count(id)) { // 耍我呢?
printf("%04d: Are you kidding?\n", id);
continue;
}
if (seen.count(id)) { // 不能多吃多占!
printf("%04d: Checked\n", id);
continue;
}
const int x = ranking[id];
if (x == 1) printf("%04d: Mystery Award\n", id); // NO 1
else if (isPrime(x)) printf("%04d: Minion\n", id);
else printf("%04d: Chocolate\n", id);
seen.emplace(id);
}
}