1059 C语言竞赛
水题,hash题。
#include<iostream> #include<cmath> using namespace std; int hashtable[10000] = {0}; bool isPrime(int n) { //判断是否是素数 if(n <= 1) return false; int t = sqrt(n); for(int i = 2; i <= t; ++i) if(n%i == 0) return false; return true; } int main() { int n,id,k; scanf("%d",&n); for(int i = 1; i <= n; ++i) { scanf("%d",&id); if(i == 1) hashtable[id] = 1; else if(isPrime(i)) hashtable[id] = 2; else hashtable[id] = 3; } scanf("%d",&k); while(k--) { scanf("%d",&id); printf("%04d: ",id); if(hashtable[id] == 0)//表示不存在 printf("Are you kidding?\n"); else if(hashtable[id] == 1)//冠军 printf("Mystery Award\n"); else if(hashtable[id] == 2)//素数排名 printf("Minion\n"); else if(hashtable[id] == 3)//其他人 printf("Chocolate\n"); else //已经查询过的人 printf("Checked\n"); if(hashtable[id] != 0) hashtable[id] = 4;//置为已经查询过 } return 0; }