当前位置:   article > 正文

PAT——1059 C语言竞赛_关于c语言的论文型竞赛

关于c语言的论文型竞赛

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

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

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

输入格式:

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

输出格式:

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

输入样例:

  1. 6
  2. 1111
  3. 6666
  4. 8888
  5. 1234
  6. 5555
  7. 0001
  8. 6
  9. 8888
  10. 0001
  11. 1111
  12. 2222
  13. 8888
  14. 2222

输出样例:

  1. 8888: Minion
  2. 0001: Chocolate
  3. 1111: Mystery Award
  4. 2222: Are you kidding?
  5. 8888: Checked
  6. 2222: Are you kidding?

代码长度限制

16 KB

时间限制

200 ms

内存限制

64 MB

解题思路:把所有人的ID存在一个数组中,然后查询时判断属于哪种获奖情况,然后进行一一对应,用flag数组来记录是否已经颁过奖 。

然后提交完我发现测试点2没过,看了好久才发现自己有一个部分忘记改flag数组的值了,还是粗心。看了网上很多博客,发现测试点2没过可能有几种原因:

判断素数出错

②没记录是否已经颁过奖

③输出的ID中没有控制%04d,在输出0001类似的情况时会出错

……

 

  1. #include<iostream>
  2. #include<string>
  3. #include<cmath>
  4. using namespace std;
  5. int isSushu(int n) //判断n是否是素数
  6. {
  7. for(int i=2;i<=sqrt(n);i++)
  8. {
  9. if(n%i==0)
  10. return 0;
  11. }
  12. return 1;
  13. }
  14. int main()
  15. {
  16. int n,index;
  17. scanf("%d",&n);
  18. int ID[100000],flag[100000]={0};
  19. int id[100000];
  20. for(int i = 0;i<n;i++) //排名ID序列
  21. {
  22. scanf("%d",&ID[i]);
  23. }
  24. int k;
  25. scanf("%d",&k);
  26. for(int j=0;j<k;j++) //要查询的ID序列
  27. {
  28. scanf("%d",&id[j]);
  29. }
  30. for(int x=0;x<k;x++)
  31. {
  32. for(index=0;index<n;index++)
  33. {
  34. if(id[x]==ID[index]) //在排名序列中
  35. {
  36. if(index==0&&flag[index]==0)
  37. {
  38. printf("%04d: Mystery Award\n",id[x]);
  39. flag[index]=1;
  40. break;
  41. }
  42. else if(flag[index]==0&&isSushu(index+1)==1)
  43. {
  44. printf("%04d: Minion\n",id[x]);
  45. flag[index]=1;
  46. break;
  47. }
  48. else if(flag[index]==1)
  49. {
  50. printf("%04d: Checked\n",id[x]);
  51. break;
  52. }
  53. else
  54. {
  55. printf("%04d: Chocolate\n",id[x]);
  56. flag[index]=1;
  57. break;
  58. }
  59. }
  60. }
  61. if(index==n) //查询不到该ID序号
  62. printf("%04d: Are you kidding?\n",id[x]);
  63. }
  64. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/713093
推荐阅读
相关标签
  

闽ICP备14008679号