

题目大意:
根据排名(从一开始)的情况决定获奖的类别,第一拿神秘大奖,素数排名拿小黄人,其他拿巧克力。然后查询,输出查询结果。
解题思路:
水题,模拟即可。
代码如下:
#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;
}
本文介绍了一个简单的算法,用于根据参赛者的排名分配不同类型的奖品。通过判断排名是否为素数来决定奖品类别,同时处理了查询输出结果的逻辑。代码使用C++实现,包括了素数判断函数和数据结构的运用。

812

被折叠的 条评论
为什么被折叠?



