题目描述
分析:利用散列记录每位考生的排名
#include<cstdio>
#include<cmath>
#include<algorithm>
using namespace std;
int n;
int hashTable[10005];
bool prime[10005];
void findPrime(){
fill(prime+2,prime+10005,true);
for(int i=2;i<10005;i++){
if(prime[i]){
for(int j=i+i;j<10005;j+=i){
prime[j]=false;
}
}
}
}
int main(){
findPrime();
scanf("%d",&n);
int id;
for(int i=1;i<=n;i++){
scanf("%d",&id);
hashTable[id]=i;
}
scanf("%d",&n);
while(n--){
scanf("%d",&id);
printf("%04d: ",id);
if(hashTable[id]==0){
printf("Are you kidding?\n");
}
else if(hashTable[id]==-1){
printf("Checked\n");
}
else{
if(hashTable[id]==1){
printf("Mystery Award\n");
}
else if(prime[hashTable[id]]){
printf("Minion\n");
}
else{
printf("Chocolate\n");
}
hashTable[id]=-1;
}
}
return 0;
}