1059. C语言竞赛(20)

C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:
0. 冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
1. 排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
2. 其他人将得到巧克力。

给定比赛的最终排名以及一系列参赛者的ID,你要给出这些参赛者应该获得的奖品。

输入格式:

输入第一行给出一个正整数N(<=10000),是参赛者人数。随后N行给出最终排名,每行按排名顺序给出一位参赛者的ID(4位数字组成)。接下来给出一个正整数K以及K个需要查询的ID。

输出格式:

对每个要查询的ID,在一行中输出“ID: 奖品”,其中奖品或者是“Mystery Award”(神秘大奖)、或者是“Minion”(小黄人)、或者是“Chocolate”(巧克力)。如果所查ID根本不在排名里,打印“Are you kidding?”(耍我呢?)。如果该ID已经查过了(即奖品已经领过了),打印“ID: Checked”(不能多吃多占)。

输入样例:

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?

求解过程:

通过用空间换时间的方式来提高效率,首先开一个10001大小的数组Arr,初始化为0,然后每输入一个ID,就令Arr[ID]=i+1,其中i是输入的顺序,用一个for循环即可完成。剩下的就按部就班,稍加注意输出的时候要加上%04d以防止出现ID为0001的输出为1.

程序:

#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;int Stu[100001] = {0};     // 以ID为下标,排名为值
int visited[100001] = {0}; // 记录访问与否
int isPrimeNum(int x)       // 求是否为素数
{for (int i = 2; i <= sqrt(x); i++)if (x % i == 0)     // 一旦出现有一个数可以整除x,就返回0,不是素数return 0;return 1;                // 否则是素数
}   int main(int argc, char const *argv[])
{int N, K, ID;cin >> N;for (int i = 0; i < N; i++)      // 初始化数组{cin >> ID;Stu[ID] = i+1;               // 排名从1开始。}cin >> K;for (int i = 0; i < K; i++){cin >> ID;if (!Stu[ID])               // 如果Stu[ID]为0,说明不存在printf("%04d: Are you kidding?\n", ID);else                        // 如果存在{if (visited[ID])        // 如果已访问printf("%04d: Checked\n", ID);else                    // 如果未访问{if (Stu[ID] == 1)printf("%04d: Mystery Award\n", ID);else if (isPrimeNum(Stu[ID]))printf("%04d: Minion\n", ID);elseprintf("%04d: Chocolate\n", ID);}visited[ID] = 1;      // 将该点置为1,表示已访问}}return 0;
}

PAT乙 1059. C语言竞赛相关推荐

  1. 【JAVA】PAT 乙级 1059 C语言竞赛(测试点1、2超时) 内含1-10000的素数表和0-10000是否素数的boolean值

    [JAVA]PAT 乙级 1059 C语言竞赛(测试点1.2超时) 以下是1-10000的素数,和0-10000的素数是不是素数的boolean值 0-10000是不是素数的boolean 值 题目链 ...

  2. JAVA两年5009_【JAVA】PAT 乙级 1059 C语言竞赛(测试点1、2超时) 内含1-10000的素数表和0-10000是否素数的boolean值...

    [JAVA]PAT 乙级 1059 C语言竞赛(测试点1.2超时)题目链接 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份 ...

  3. C++学习之路 | PTA乙级—— 1059 C语言竞赛 (20 分)(精简)

    1059 C语言竞赛 (20 分) C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很 ...

  4. 1059 C语言竞赛(PAT乙级 C++)

    题目 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--) ...

  5. 1059. C语言竞赛(20)-PAT乙级真题

    C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0. 冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...

  6. 【超高效代码】1059 C语言竞赛 (20分)

    立志用更少的代码做更高效的表达 Pat乙级最优化代码+题解+分析汇总-->传送门 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠 ...

  7. 1059. C语言竞赛(20)

    C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0. 冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...

  8. 1059 C语言竞赛 (ID映射编号映射字符串)

    C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...

  9. 【PAT乙级】1059 C语言竞赛 (20 分)

    题目地址 #include<bits/stdc++.h> using namespace std; int n,k; string s[5]={"","Mys ...

最新文章

  1. 导航控制器自定义返回控件及手势失效问题
  2. NVL 和NVL2函数
  3. Arrays.sort和Collection.sort分别使用什么排序来实现的
  4. DB2数据库报 [SQL0805N Package NULLID.SQLLD003 was not found.]
  5. Cookie的生命周期问题
  6. C#正在被人用来做什么?--在CSDN上引发小讨论的帖子
  7. android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
  8. python response重头开始_你必须学写 Python 装饰器的五个理由
  9. 在“后台反复读取用户相册”?微信回应:最新版本将取消
  10. Hybrid App工作笔记0001---混合App开发过程中_Web是如何调用原生功能的_调用原理
  11. error: numpy/arrayobject.h No such file or directory解决方法
  12. 如何提高 Java 中锁的性能
  13. BigWorld用到的第三方库
  14. outlook2016修改服务器,Outlook 2016 pop3 设置
  15. 【Python】fastapi框架之Web部署机器学习模型
  16. 亚马逊AWS学习——EC2实例无法正确加载EBS卷问题的解决
  17. 数字图像处理——灰度变换
  18. 国内宠物保险“不受宠”背后,这门生意该如何做好?
  19. js 中的this指针
  20. 我们要注意的问题.net

热门文章

  1. PCB模块化设计14——MIPI模块PCB布局布线设计规范
  2. oracle 更新update语句
  3. js穿梭框 实现_jquery实现穿梭框功能
  4. 概率密度函数(pdf)与概率质量函数(pmf)的区别
  5. 《面试八股文》之Dubbo17卷
  6. Microsoft SQL Server Management Studio ------- 附加数据库失败
  7. 百度入局“造车”背后,一场4轮智能革命正在发生
  8. 【报表Reporting Service】
  9. 图像二值化中阈值算法浅析
  10. Linux下用SCP免密传输文件设置