PAT A1116 Come on! Let's C(C++)

PAT甲级目录 | PAT乙级目录

题目描述

原题地址:A1116 Come on! Let’s C
中文版:B1059 C语言竞赛

解题思路

元素查找。将 id 作为关键字,对应排名作为值,并设置 check 数组判断是否已经查找过。

易错点

  • printf("%04d: ", id);
    • id 为4位数字

也许陌生的知识点

  • 求素数的函数
    1
    2
    3
    4
    5
    6
    bool isprime(int x){
    for(int i = 2; i * i <= x; i++){
    if(x % i == 0) return false;
    }
    return true;
    }

代码示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <cstdio>
bool isprime(int x){
for(int i = 2; i * i <= x; i++){
if(x % i == 0) return false;
}
return true;
}
int main(){
int N, K, R[10010], check[10010] = {0}, id;
scanf("%d", &N);
for(int i = 1; i <= N; i++){
scanf("%d", &id);
R[id] = i;
}
scanf("%d", &K);
for(int i = 0; i < K; i++){
scanf("%d", &id);
printf("%04d: ", id); // id 为4位数字
if(check[id] == 0){
if(R[id] >= 1 && R[id] <= N){
if(R[id] == 1) printf("Mystery Award\n");
else if(isprime(R[id])) printf("Minion\n");
else printf("Chocolate\n");
check[id] = 1;
}else printf("Are you kidding?\n");
}else printf("Checked\n");
}
return 0;
}