原文:我的個人博客
原題鏈接
思路
題目已經按名次給定每個同學ID。用map<string,int>m
來存儲每個同學獲得的稱號。第一名錶示爲1,排名爲素數排名的記爲2,其餘的記爲3.並在查詢的過程中,將已經查詢的記爲4.當然沒有出現的ID默認值即爲0.
代碼
#include <bits/stdc++.h>
using namespace std;
int isPrime(int x){
if(x<=0) return 0;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return 0;
}
return 1;
}
int main(){
int n,k;
string tmp;
map<string,int>m;
cin>>n;
for(int i=1;i<=n;i++){
cin>>tmp;
if(i==1) m[tmp] = 1;//Mystery Award
else if(isPrime(i)) m[tmp] = 2;//Minion
else m[tmp] = 3;//Chocolate
}
cin>>k;
for(int i=0;i<k;i++){
cin>>tmp;
cout<<tmp<<": ";
if(m[tmp]==1){
cout<<"Mystery Award"<<endl;
m[tmp] = 4;//checked
}else if(m[tmp] == 2){
cout<<"Minion"<<endl;
m[tmp] = 4;
}else if(m[tmp]==3){
cout<<"Chocolate"<<endl;
m[tmp] = 4;
}else if(m[tmp]==4){
cout<<"Checked"<<endl;
}else{
cout<<"Are you kidding?"<<endl;
}
}
}