1059 C语言竞赛 (20 分)
题目:1059 C语言竞赛 (20 分)
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:
- 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
- 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
- 2、其他人将得到巧克力。
给定比赛的最终排名以及一系列参赛者的 ID,你要给出这些参赛者应该获得的奖品。
输入格式:
输入第一行给出一个正整数 N(≤),是参赛者人数。随后 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?
思路:
- 开个数组rate【MAXN】整型数组,初始化为0后,记录输入的对应id排名。接下来按题目要求打印查询结果,但是要记住,只要id存在,访问后就要做上访问过的标记,可以另外开个标记数组,也可以直接将其排名置为-1,表示已经领过。id是四位数字,定义成整形后输出是要确保四位数,不足补零,采用 %04d 的格式。因为系统会在输入后自动保留有效数字,而把前面的多余的0掉。
- 判断素数可以使用素数筛进行预处理(先存储好,可直接用),或者直接使用能被1和本身之外的数整除来判断是不是素数(边输入边判断)。
代码:
#include <cstdio>
#include <cstring>
#include <cctype>
#include <iostream>
#include <sstream>
#include <cmath>
#include <algorithm>
#include <string>
#include <stack>
#include <queue>
#include <vector>
#include <map>
using namespace std;
#define MAXN 10005 int prime[MAXN]; void isprime() //素数筛
{
memset(prime, , sizeof(prime)); //初始化默认都是素数再逐一排除
prime[] = prime[] = ;
for(int i = ; i < MAXN; i++)
{
for(int j = i * ; j < MAXN; j += i)
prime[j] = ;
}
} int main()
{
isprime();
int n, k, id, idlast;
scanf("%d", &n);
int rate[MAXN];
memset(rate, , sizeof(rate));
for(int i = ; i <= n; i++)
{
scanf("%d", &id); //id的排名
rate[id] = i;
}
scanf("%d", &k);
for(int i = ; i < k; i++) //领奖品
{
scanf("%d", &idlast);
if(rate[idlast] == -) //id存在且查过了
printf("%04d: Checked\n", idlast);
else if(rate[idlast] == ) //排名第一
{
printf("%04d: Mystery Award\n", idlast);
rate[idlast] = -;
}
else if(prime[rate[idlast]]) //排名是素数
{
printf("%04d: Minion\n", idlast);
rate[idlast] = -;
}
else if(rate[idlast] == ) //id不存在
printf("%04d: Are you kidding?\n", idlast);
else //其他排名情况
{
printf("%04d: Chocolate\n", idlast);
rate[idlast] = -;
}
}
return ;
}
总结:
在main函数外面定义的全局整型数组,初值会默认为0 。也就是系统会自动将数组初始化为0 。
一道看似容易实现简单的题,一开始使用素数筛后忘记在主函数中调用……很久才发现。但是也因为这样经过调试后发现,定义在主函数外部的数组系统好像会自动将其初始化为0,难怪调试时,发现全部判断成合数了。发现错误和补漏的能力太欠缺了,其次奖品是chocolate的忘记标记访问了导致测试点2错误……
1059 C语言竞赛 (20 分)的更多相关文章
- PAT Basic 1059 C语言竞赛 (20 分)
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……). 1.排名为素数的学生将 ...
- 1059 C语言竞赛 (20 分)C语言
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 1 ...
- PAT 1059. C语言竞赛(20)
C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0. 冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……). 1. 排名为素数的学生 ...
- 1059. C语言竞赛(20)
原题: https://www.patest.cn/contests/pat-b-practise/1059 思路: 参赛者id是数组下标, 数组值是参赛者排名位置(从1开始), 每次判断0不存在, ...
- PAT(B) 1059 C语言竞赛(C)
题目链接:1059 C语言竞赛 (20 point(s)) 题目描述 C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份" ...
- PAT 1059 C语言竞赛(20)(代码+思路)
1059 C语言竞赛(20 分) C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0.冠军将赢得一份"神秘大奖"(比如很巨 ...
- PAT 1059. C语言竞赛
PAT 1059. C语言竞赛 C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份"神秘大奖"(比如很巨大的一本 ...
- PAT——1059. C语言竞赛
C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 0. 冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……).1. 排名为素数的学生将 ...
- 1059. C语言竞赛
C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛.既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽: 冠军将赢得一份"神秘大奖"(比如很巨大的一本学生研究论文集--). 排名为 ...
随机推荐
- Win10教育版VL版kms密钥激活
1.右键开始图标,或者win+x,选择Windows PowerShell(管理员): 2.依次执行下面的命令,分别表示安装win10教育版密钥,设置kms服务器,激活win10教育版: slmgr ...
- Asp.NET CORE安装部署
先安装IIS再安装这两个,不然后面各种bug HTTP 错误 500.19 代码 0x8007000d 解决方案 for win7_64 asp.net core IIS Web Core 1.比如最 ...
- JavaWeb乱码问题及统一全站编码(通过Filter实现)
1. public class CharacterFilter implements Filter { private String characterEncoding = null; FilterC ...
- .NET技术-6.0. Expression 表达式树 生成 Lambda
.NET技术-6.0. Expression 表达式树 生成 Lambda public static event Func<Student, bool> myevent; public ...
- (4)关于Alpha通道问题
其实,我还是不理解,我还是先把我目前懂得和觉得有用的东西先存下来 =================================================================== ...
- SQL基础教程(第2版)第8章 SQL高级处理:8-1 窗口函数
第8章 SQL高级处理:8-1 窗口函数 ● 窗口函数可以进行排序.生成序列号等一般的聚合函数无法实现的高级操作.● 理解PARTITION BY和ORDER BY这两个关键字的含义十分重要. ■什么 ...
- Python 重新加载模块
每个Python文件中的import modulename只被加载一遍,如果在运行过程中,这个Module被更改了,即使在在interpretor中运行import 语句也没用. 可以使用import ...
- 使用py-faster-rcnn训练自己的数据集
https://www.jianshu.com/p/a672f702e596 本文记录了在ubuntu16.04下使用py-faster-rcnn来训练自己的数据集的大致过程. 在此之前,已经成功配置 ...
- 107.JsonResponse
JsonResponse类: 用来dump字符串成json字符串,然后返回将json字符串封装成Response对象返回给浏览器,并且它的Content-Type是application/json.示 ...
- l1 和l2范数的真实意义
很长时间一直没有明白真实的含义,十一期间补充一下这方面的知识. l0 范数是 ||x||0 = xi (xi不等于0)代表非0数字的个数,[1,2,3,4,5] 非0个数为5,[0,1,2,0,3] ...