题目链接 实现 #include <vector> #include <cstdio> #include <iostream> #include <cmath> using namespace std; bool isPrime(int num) { bool flag = true; int i; for (i = 2; i <= sqrt(num); i++) { if (num%i == 0) { flag = false; break; } } return flag; } int main() { int i, N, k, temp; cin >> N; vector<int> rank(N + 1); //根据排名记录ID vector<int> count(N + 1); //用来判断有没有领奖 for (i = 1; i <= N; i++) count[i] = 0; for (i = 1; i <= N; i++) { cin >> rank[i]; count[i]++; } cin >> k; bool exist; while (k--) { cin >> temp; exist = false; for (i = 1; i <= N; i++) { if (temp == rank[i]) { exist = true; count[i]--; break; } } if (i <= N) { if (count[i] == 0) { if (i == 1) printf("%04d: Mystery Award\n", temp); else if (isPrime(i)) printf("%04d: Minion\n", temp); else printf("%04d: Chocolate\n", temp); } else printf("%04d: Checked\n", temp); } else printf("%04d: Are you kidding?\n", temp); } return 0; }