题目描述


分析:利用散列记录每位考生的排名
#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;
}
本文介绍了一种使用散列表来记录和查询排名的方法,并通过判断排名是否为素数来决定奖品分配。代码实现中包含了寻找素数的算法。

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



