1059. C语言竞赛(20)
2017-11-21 16:25
323 查看
原题: https://www.patest.cn/contests/pat-b-practise/1059
思路: 参赛者id是数组下标, 数组值是参赛者排名位置(从1开始),
每次判断0不存在, -1领过奖了, 其它就是位置序号.
实现:
#include <stdio.h> #define LEN 10010 int isPrime (int n); // -1 领过奖了 0不存在 其它就是位置序号 int main (void) { int pnum; int snum; int stu[LEN] = {0}; int pno; int i; scanf("%d", &pnum); for (i = 1; i <= pnum; i++) { scanf("%d", &pno); stu[pno] = i; } scanf("%d", &snum); for (i = 1; i <= snum; i++) { scanf("%d", &pno); if (stu[pno] == 1) { // 第一名 printf("%04d: Mystery Award\n", pno); stu[pno] = -1; } else if (stu[pno] == 0) { // 不存在 printf("%04d: Are you kidding?\n", pno); } else if (stu[pno] == -1) { // 已领过奖品 printf("%04d: Checked\n", pno); } else if (isPrime(stu[pno]) == 1) { // 排名是素数 printf("%04d: Minion\n", pno); stu[pno] = -1; } else { // 其它情况, 拿到巧克力 printf("%04d: Chocolate\n", pno); stu[pno] = -1; } } return 0; } // 0不是素数 1是素数 // 从2开始 int isPrime (int n) { int i = 2; while (i * i <= n) { if (n % i == 0) return 0; i++; } return 1; }
相关文章推荐
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- PAT - 1059. C语言竞赛(20)
- PAT - 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)(C++)
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)——Python
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- PAT BASIC LEVEL 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- PAT (Basic Level) Practise (中文) 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- 1059. C语言竞赛(20)
- pat 乙级 1059. C语言竞赛(20)
- PAT Basic 1059. C语言竞赛(20)(C语言实现)
- 1059. C语言竞赛(20) PAT 乙级&&1116. Come on! Let's C (20) PAT甲级