题目大意:
根据排名(从一开始)的情况决定获奖的类别,第一拿神秘大奖,素数排名拿小黄人,其他拿巧克力。然后查询,输出查询结果。
解题思路:
水题,模拟即可。
代码如下:
#include<iostream>
#include<map>
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
struct lc
{
string award;
int book=0;
};
map<string,lc>m;
bool prime(int p)//判断是否是素数
{
if(p==2||p==3)return true;
for(int i=2;i<=sqrt(p);i++)
{
if(p%i==0)return false;
}
return true;
}
int main()
{
int n;
cin>>n;
for(int i=1;i<=n;i++)
{
string s;
cin>>s;
if(i==1) m[s].award="Mystery Award";
else
{
if(prime(i))m[s].award="Minion";
else m[s].award="Chocolate";
}
m[s].book=1;
}
int k;
cin>>k;
for(int i=0;i<k;i++)
{
string s;
cin>>s;
cout<<s<<": ";
if(m[s].book)
{
if(m[s].book==1)
{
cout<<m[s].award<<endl;
m[s].book++;
}
else cout<<"Checked"<<endl;
}
else cout<<"Are you kidding?"<<endl;
}
return 0;
}