素数题,直接写了,比较简单。
isprime函数注意sqrt单独写出来一个变量,循环的边界加上等号。
#include<bits/stdc++.h>
using namespace std;
int rk[10000];
bool isprime(int a){
if(a==1)return false;
int s=sqrt((double)a);
for(int i=2;i<=s;i++){
if(a%i==0)return false;
}
return true;
}
bool flag[10000]={};
int main(){
int n,k;
scanf("%d",&n);
int temp;
for(int i=0;i<n;i++){
scanf("%d",&temp);
rk[temp]=i+1;
}
scanf("%d",&k);
for(int i=0;i<k;i++){
scanf("%d",&temp);
printf("%04d: ",temp);
if(flag[temp])printf("Checked\n");
else if(rk[temp]==1) {
printf("Mystery Award\n");
flag[temp]=true;
}
else if(isprime(rk[temp])&&rk[temp]!=0){
printf("Minion\n");
flag[temp]=true;
}
else if(rk[temp]!=0){
printf("Chocolate\n");
flag[temp]=true;
}
else{
printf("Are you kidding?\n");
}
}
return 0;
}