有个3分测试点过不去,还没发现问题所在。
#include<iostream>
#include<map>
using namespace std;
int isprime(int n)
{
if (n <= 1) return 0;
for (int i = 2; i <= n / 2; i++)
{
if (n % i == 0) return 0;
}
return 1;
}
int main()
{
map<int, int> rank;
int n, k, id;
cin >> n;
map<int, int> visit;
for (int i = 0; i < n; i++)
{
cin >> id;
rank[id] = i + 1;
}
cin >> k;
for (int i = 0; i < k; i++)
{
cin >> id;
if (rank[id] == 1 && visit[id] == 0)
{
visit[id] = 1;
printf("%04d: Mystery Award\n", id);
}
else if (rank[id] == 0)
{
visit[id] = 1;
printf("%04d: Are you kidding?\n", id);
}
else if (isprime(rank[id]) == 1 && visit[id] == 0)
{
visit[id] = 1;
printf("%04d: Minion\n", id);
}
else if (visit[id] == 1) printf("%04d: Checked\n", id);
else if (visit[id] == 0) printf("%04d: Chocolate\n", id);
}
}