题意
冠军输出“Mystery Award”
排名为素数输出"Minion”
其余输出“Chocolate”
非法输出“Are you kidding?”
源码
#include
#include
using namespace std;
vectorprime;
map<string,int>myRank;
int checked[10005];
bool isPrime(int n){
int flag=0;
for(int i=2;i*i<=n;i++){
if(n%i==0){
return false;
}
}
return true;
}
int main(){
prime.push_back(2);
prime.push_back(3);
prime.push_back(5);
prime.push_back(7);
for(int i=10;i<10005;i++){
if(isPrime(i)){
prime.push_back(i);
}
}
for(int i=0;i<10005;i++){
checked[i]=0;
}
int n,m;
string str;
cin>>n;
for(int i=0;i<n;i++){
cin>>str;
myRank[str]=i;
}
cin>>m;
map<string,int>::iterator result;
for(int i=0;i<m;i++){
cin>>str;
result=myRank.find(str);
if(result!=myRank.end()){
int temp=result->second+1;
if(checked[temp]==1){
cout<<str<<": Checked"<<endl;
continue;
}
vector<int>::iterator x = find( prime.begin( ), prime.end( ), temp );
if(temp ==1){
cout<<str<<": Mystery Award"<<endl;
}else if(x!=prime.end()){
cout<<str<<": Minion"<<endl;
}else{
cout<<str<<": Chocolate"<<endl;
}
checked[temp]=1;
}else{
cout<<str<<": Are you kidding?"<<endl;
}
}
}