【PAT】1116. Come on! Let's C (20)【素数表-埃拉托斯特尼筛法】

2024-04-12 06:08

本文主要是介绍【PAT】1116. Come on! Let's C (20)【素数表-埃拉托斯特尼筛法】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目描述

“Let’s C” is a popular and fun programming contest hosted by the College of Computer Science and Technology, Zhejiang University. Since the idea of the contest is for fun, the award rules are funny as the following:

0、 The Champion will receive a “Mystery Award” (such as a BIG collection of students’ research papers…).
1、 Those who ranked as a prime number will receive the best award – the Minions (小黄人)!
2、 Everyone else will receive chocolates.

Given the final ranklist and a sequence of contestant ID’s, you are supposed to tell the corresponding awards.

翻译:“Let’s C” 是一个由浙江大学计软院组织的有名的和有趣的程序比赛。由于这个比赛的目的是为了有趣,所以颁奖规则按照以下方式办理:
0.冠军将会获得一份"神秘的奖项"(类似于学生论文的大集合。。。)
1.那些排名为素数的人将获得最佳奖——小黄人!
2.其他人将获得巧克力。

给定最终的排名和一个参赛者ID序列,你需要说出对应的奖项。

Input Specification:

Each input file contains one test case. For each case, the first line gives a positive integer N (≤104), the total number of contestants. Then N lines of the ranklist follow, each in order gives a contestant’s ID (a 4-digit number). After the ranklist, there is a positive integer K followed by K query ID’s.

翻译:每个输入文件包含一组测试数据。对于每组输入数据,第一行包括一个正整数N(≤104),表示参赛总人数。接下来有N行排名表,每一行按照排名顺序给出一个参赛者的ID(一个四位数字)。在排名表后,有一回正整数K,跟着K给查询的ID。

Output Specification:

For each query, print in a line ID: award where the award is Mystery Award, or Minion, or Chocolate. If the ID is not in the ranklist, print Are you kidding? instead. If the ID has been checked before, print ID: Checked.

翻译:对于每个查询,输出一行,ID:奖品例如Mystery Award, 或 Minion, 或 Chocolate。如果ID不在排名表上,则输出Are you kidding? 。如果ID之前已经被检索过了,输出print ID: Checked。


Sample Input:

6
1111
6666
8888
1234
5555
0001
6
8888
0001
1111
2222
8888
2222


Sample Output:

8888: Minion
0001: Chocolate
1111: Mystery Award
2222: Are you kidding?
8888: Checked
2222: Are you kidding?


解题思路

通过埃拉托斯特尼筛法筛出素数表,然后进行各种判断。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
#define INF 99999999
#define bug puts("Hello\n")
using namespace std;
bool prime[10010],visited[10010];
int Rank[10010],N;
void fun(){for(int i=1;i<=N;i++)prime[i]=true,visited[i]=false;for(int i=2;i<=N;i++){if(prime[i]){for(int j=i+i;j<=N;j+=i){prime[j]=false;}}}
}
int main(){scanf("%d",&N);fun();int a;for(int i=1;i<=N;i++){scanf("%d",&a);Rank[a]=i; }int K;scanf("%d",&K);for(int i=0;i<K;i++){scanf("%d",&a);printf("%04d: ",a);if(visited[a]==false&&Rank[a]!=0){if(Rank[a]==1)printf("Mystery Award\n");else if(prime[Rank[a]]==true)printf("Minion\n");else printf("Chocolate\n");visited[a]=true;}else if(Rank[a]==0)printf("Are you kidding?\n");else printf("Checked\n");}return 0;
}

这篇关于【PAT】1116. Come on! Let's C (20)【素数表-埃拉托斯特尼筛法】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/896316

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

【JavaScript】let与var的区别及变量、函数提升

有var与无var的区别   在函数内部,有var和没var声明的变量是不一样的。有var声明的是局部变量,没var的,声明的全局变量,所以可以借此向外暴露接口。 let与var的区别   在上面代码中,我们使用var语句声明变量x。因此,变量x的范围是函数范围。if语句内的变量x就是if语句外创建的变量x。因此,在你修改if语句块内变量x的值的时候,也会修改函数中变量x的所有引用的

C++20中支持的非类型模板参数

C++20中支持将类类型作为非类型模板参数:作为模板参数传入的对象具有const T类型,其中T是对象的类型,并且具有静态存储持续时间(static storage duration)。       在C++20之前,非类型模板参数仅限于:左值引用类型、整数类型、指针类型、指向成员类型的指针、枚举类型、std::nullptr_t。在C++20中,它已扩展并支持:浮点类型、字面量类类

js算法判断是否为素数

/*判断一个数字是否是质数: 质数(prime number)又称素数,有无限个。除了1和它本身以外不再被其他的除数整除。*/ function isPrime(number){ //判断输入是否为number类型,是否为整数       if (typeof number!=='number'||!Number.isInteger(number))      {

Google 实现量子霸权!3分20秒运算,世界第一超算要跑1万年!

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! By  大数据技术与架构 场景描述:谷歌宣称“量子霸权”已经实现,他们首次在实验中证明了量子计算机对于传统架构计算机的优越性:在世界第一超算 Summit 需

PAT甲级-1044 Shopping in Mars

题目   题目大意 一串项链上有n个钻石,输入给出每个钻石的价格。用m元买一个连续的项链子串(子串长度可为1),如果不能恰好花掉m元,就要找到最小的大于m的子串,如果有重复就输出多个,按递增顺序输出子串的前端和后端索引。 原来的思路 取连续的子串使和恰等于m,没有恰等于就找最小的大于。可以将子串依次累加,使得每个位置都是起始位置到该位置的序列和,整个数组显递增顺序,就可以用右边减左边

UI 自动化技能:20个实战技巧!测试工程师必看!

大家周五 好啊!忙碌了一周,又可以懒洋洋躺在沙发上了~~~ 又到了每年的金九银十了,今天聊聊如何提升UI自动化话题... 你是否在求职过程中感受到UI自动化的技能不足? 随着测试行业的发展,UI自动化测试已成为每位测试工程师的必修课。无论你是想提升现有的测试效率,还是在找工作中获得竞争优势,掌握UI自动化技能都能为你带来巨大的帮助。那么,如何快速提升这些技能呢? UI(用户界面)自