其他分享
首页 > 其他分享> > PAT(Advanced Level)A1116. Come on! Let's C

PAT(Advanced Level)A1116. Come on! Let's C

作者:互联网

题意

举行了比赛,冠军有神秘奖,名次是素数的人会收到小黄人,其他的任何人会收到巧克力,不在名单里的人也要检查出来,还要识别出已经检查过的人

思路

代码

#include <iostream>
#include <vector>
#include <queue>
#include <map>
#include <string.h>
#include <set>
#include <unordered_map>
#include <algorithm>
using namespace std;
unordered_map<int, int> ranklist;
unordered_map<int, int> namelist;
bool is_prime(int x) {
    if(x <= 1)  return false;
    for(int i = 2; i * i <= x; i++) {
        if(x % i == 0)   return false;
    }
    return true;
}
int main() {
    int N, K, tmp;
    cin >> N;
    for(int i = 1; i <= N; i++) {
        cin >> tmp;
        ranklist[tmp] = i;
        namelist[tmp] = 1;
    }
    cin >> K;
    bool checked[10001] = {0};
    for(int i = 0; i < K; i++) {
        cin >> tmp;
        if(namelist[tmp] == 0)                          // 不在名单上
            printf("%04d: Are you kidding?\n", tmp);
        else if(checked[tmp])                           // 已经检查过了
            printf("%04d: Checked\n", tmp);
        else {
            checked[tmp] = true;
            if(ranklist[tmp] == 1)                      // 第一名
                printf("%04d: Mystery Award\n", tmp);
            else if(is_prime(ranklist[tmp]))            // 名次为素数
                printf("%04d: Minion\n", tmp);
            else
                printf("%04d: Chocolate\n", tmp);       // 巧克力
        }
    }
    return 0;
}

标签:tmp,PAT,Level,04d,else,Let,ranklist,printf,include
来源: https://www.cnblogs.com/MartinLwx/p/14532843.html