PAT 乙级 1059 C语言竞赛
题目
输入样例:
6
1111
6666
8888
1234
5555
0001
6
8888
0001
1111
2222
8888
2222
输出样例:
8888: Minion
0001: Chocolate
1111: Mystery Award
2222: Are you kidding?
8888: Checked
2222: Are you kidding?
原题链接
注意:
需要判断素数,我刚开始做的时候以为素数就是奇数,然后按奇数做的4个测试点有3个都通过,为第4个改了好长好长时间。。。。
后面几个else if的顺序要注意不能随便颠倒。
源码:
#include<stdio.h>
int main()
{
int n1, n2, shuzu[10000] = { 0 };
scanf("%d", &n1);
for (int i = 1; i <= n1; i++) {
int a;
scanf("%d", &a);
shuzu[a] = i;
}
scanf("%d", &n2);
for (int i = 0; i < n2; i++) {
int b;
int biaozhi = 1; //判断是否是素数的标志
scanf("%d", &b);
for (int k = 2; k < shuzu[b]; k++) {
if (shuzu[b] % k == 0) {
biaozhi = 0;
break;
}
}
if (shuzu[b] == 1) {
printf("%04d: Mystery Award\n", b);
shuzu[b] = -1;
}
else if (shuzu[b] == 0) printf("%04d: Are you kidding?\n", b);
else if (shuzu[b] == -1)printf("%04d: Checked\n", b);
else if (biaozhi == 1) {
printf("%04d: Minion\n", b);
shuzu[b] = -1;
}
else {
printf("%04d: Chocolate\n", b);
shuzu[b] = -1;
}
}
return 0;
}