PAT A1116 Come on! Let’s C
- 输入的时候判断其获得的奖项,并存入hash数组
- hash为零则是混进来的,另用一个checked数组标记获奖者有没有被查询过
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/2e0d809aa469bc02a71dbdd57b26fdb8.jpeg#pic_center)
#include<iostream>
#include<vector>
#include<string>
using namespace std;
#define MAXSIZE 10010
string awards[] = {"Mystery Award", "Minion", "Chocolate", "Are you kidding?"};
bool isPrime(int x){
if(x == 2 || x == 3) return true;
for(int i = 2;i * i <= x;i ++){
if(x % i == 0) return false;
}
return true;
}
bool checked[MAXSIZE] = {false};
int hashTab[MAXSIZE] = {0};
int main(){
int num;
cin >> num;
for(int i = 1;i <= num;i ++){
int ID;
cin >> ID;
if(i == 1) hashTab[ID] = 1;
else if(isPrime(i)) hashTab[ID] = 2;
else hashTab[ID] = 3;
}
cin >> num;
for(int i = 1;i <= num;i ++){
int ID;
cin >> ID;
printf("%04d: ",ID);
if(hashTab[ID] == 0){
cout << awards[3] << endl;
}else{
if(checked[ID]) cout << "Checked\n";
else{
cout << awards[hashTab[ID] - 1] << endl;
checked[ID] = true;
}
}
}
return 0;
}