题目链接:1059 C语言竞赛
思路
两个数组,下标为ID,一个记录名次,一个记录是否访问过。
代码
#include<iostream>
using namespace std;
int isPrime(int a){
for(int i=2;i*i<=a;i++){
if(!(a % i)) return 0;
}
return 1;
}
int main(){
int a[10000] = {0}, b[10000] = {0};
int N, K, c;
scanf("%d",&N);
for(int i=1;i<=N;i++){
scanf("%d",&c);;
a[c] = i;
}
scanf("%d",&K);
for(int i=0;i<K;i++){
scanf("%d",&c);
if(c > 9999 || c < 0 || a[c] == 0) printf("%04d: Are you kidding?\n",c);
else if(b[c] == 1) printf("%04d: Checked\n",c);
else{
if(a[c] == 1) printf("%04d: Mystery Award\n",c);
else if(isPrime(a[c])) printf("%04d: Minion\n",c);
else printf("%04d: Chocolate\n",c);
b[c] = 1;
}
}
return 0;
}