C 语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:

  • 0、冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。
  • 1、排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!
  • 2、其他人将得到巧克力。

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

输入格式:

输入第一行给出一个正整数 N(≤10e+4),是参赛者人数。随后 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?

看着N=10^4的大小想尝试用O(N^2)的暴力解法:

#include<cstdio>
#include<cstring>
const int max=10010;
int prime[max],num=0;
bool pp[max]={0};struct person{char *prize;int check=0;char id[5];
}p[10010];void init(int n){for(int i=2;;i++){if(!pp[i]){prime[num++]=i;if(num>=n) break;for(int j=i+i;j<max;j+=i){pp[j]=1;}}}
}int main(){int n,nn,j;scanf("%d",&n);getchar();init(n);for(int i=1;i<=n;i++){scanf("%s",&p[i].id);if(i==1) p[i].prize="Mystery Award";else if(pp[i]) p[i].prize="Chocolate";else p[i].prize="Minion";}char temp[5];scanf("%d",&nn);for(int i=1;i<=nn;i++){scanf("%s",temp);printf("%s: ",temp);for(j=1;j<=n;j++){if(strcmp(temp,p[j].id)==0){if(p[j].check==0){p[j].check=1;printf("%s\n",p[j].prize);}else{printf("Checked\n");}break;}}if(j==n+1)printf("Are you kidding?\n");}return 0;
}

提交时间 状态 分数 题目 编译器 耗时 用户
2019/2/2 00:49:37
部分正确
14 1059 C++ (g++) 3 ms Argentina_WU LEI
测试点 结果 耗时 内存
0 答案正确 3 ms 512 KB
1 运行超时 0 ms 0 KB
2 运行超时 0 ms 0 KB
3 答案正确 3 ms 512 KB

只得了14/20分,所以此类题还是不能抱有侥幸,需要哈希映射的思路:

#include<cstdio>
const int maxn=10010;
int I[maxn]={0};//chushihuawei0
char a[5][20]={"Are you kidding?","Mystery Award","Minion","Chocolate","Checked"};bool isPrime(int x){if(x<=1) return false;for(int i=2;i*i<=x;i++)if(x%i==0) return false;return true;
}int main(){int n,ID;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%d",&ID);if(i==1) I[ID]=1;else if(isPrime(i)) I[ID]=2;else I[ID]=3;}int m,query;scanf("%d",&m);for(int i=1;i<=m;i++){scanf("%d",&query);printf("%04d: %s\n",query,a[I[query]]);if(I[query]) I[query]=4;}return 0;
}

书中给出的上述代码既简短,思路也很好(默认为“Are you kidding?”)

转载于:https://www.cnblogs.com/exciting/p/10347425.html

1059 C语言竞赛 (ID映射编号映射字符串)相关推荐

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

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

  2. 【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 值 题目链 ...

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

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

  4. PAT乙 1059. C语言竞赛

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. JavaScript基础(一) 数据类型
  2. 【转】android开发工具Eclipse,androidStudio,adt网盘下载--不错
  3. 一些知识点的初步理解_4(协方差矩阵,ing...)
  4. 用python读取股票价格_使用Python写一个量化股票提醒系统
  5. 关于viewport我自己的理解
  6. Moodle: 登记学生,检测学生是否存在在课程 Check if user is enrolled or enroll a user in course...
  7. 04737 c++ 自学考试2019版 第四章课后程序设计题1
  8. jdbc url链接加时区正确方法
  9. Centos 7安装报错:Warning:dracut-initqueue timeout - starting timeout scripts
  10. ubuntu的文件路径
  11. 无线扫码枪 服务器查询异常,扫描枪常见问题
  12. cadence Allegro17.2关闭start page 界面方法
  13. 仓库如何盘点?使用盘点机盘点有什么好处?仓库盘点方法?
  14. 老男孩教育学习linux决心书
  15. 【kaggle】印度语和泰米尔语问答赛题baseline
  16. 口袋西游150服务器维护,口袋西游版本更新披露 幽冥界场景首曝
  17. vue练手02之表格处理
  18. js 验证身份证号码正确性
  19. java qlv转mp4 代码_独家的kux如何转成常用的mp4格式?快速将kux转mp4的技巧
  20. 互联网女皇疫情报告,数字化企业将在今后竞争中获得优势

热门文章

  1. 《精解Windows8》——1.2 告别开始按钮进入“开始”屏幕时代
  2. JAVA中String类
  3. 新装WIN7 UPDATE 无法更新
  4. 【分享】U盘大小的随身电脑 – Cotton Candy
  5. python tkinter 基本用法
  6. DARPA Grand挑战赛Overbot的软硬件架构,轨迹规划和车辆控制
  7. PHP统计链接跳转的次数,如何在PHP页面统计某链接的点击数
  8. mysql扩展中如何处理结果集_请写出PHP处理结果集的5个函数(使用mysql扩展)_学小易找答案...
  9. 广东省的盆友们,这波退税及时雨你赶上了吗?
  10. Web3.0网关Deeper Network计划于本月末在四个平台上进行IDO