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;
}

 

posted @ 2020-02-23 12:15  tangq123  阅读(186)  评论(0编辑  收藏  举报