码迷,mamicode.com
首页 > 编程语言 > 详细

1059 C语言竞赛 (20分)

时间:2020-11-13 13:20:47      阅读:33      评论:0      收藏:0      [点我收藏+]

标签:输入   接下来   ott   flex   bar   nba   c语言   浙江大学   计算   

059 C语言竞赛 (20分)
 

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

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

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

输入格式:

输入第一行给出一个正整数 N(10?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?




代码讲解:这题按题意模拟就可以了


#include<stdio.h>
#include<string.h>
typedef struct stu
{
 int y;
 int id;
 char award[30];
 int check;
 
}stu;
int prime(int n)
{
 if(n<2)
 return 0;
 int i;
 for(i=2;i*i<=n;i++)
 {
  if(n%i==0)
  return 0;
 }
 return 1;
 
}
int main()
{
 int n;
 stu s[10001];
 int i;
 scanf("%d",&n);
 for(i=0;i<10001;i++)
 {
  s[i].y=0;
  s[i].check=0;
 
 }
 int id;
 for(i=0;i<n;i++)
 {
  scanf("%d",&id);
  s[id].y=1;
  s[id].id=id;
  if(i==0)
  strcpy(s[id].award,"Mystery Award");
  else
  if(prime(i+1))
  {
   strcpy(s[id].award,"Minion");
  }
  else
  strcpy(s[id].award,"Chocolate");
  
 }
 int k;
 scanf("%d",&k);
 for(i=0;i<k;i++)
 {
  scanf("%d",&id);
  if(s[id].y==0)
  printf("%04d: Are you kidding?\n",id);
  else
  if(s[id].check==1)
  printf("%04d: Checked\n",id);
  else
  {
   printf("%04d: %s\n",id,s[id].award);
   s[id].check=1;
  }
 }
 
 return 0;
}

1059 C语言竞赛 (20分)

标签:输入   接下来   ott   flex   bar   nba   c语言   浙江大学   计算   

原文地址:https://www.cnblogs.com/bigageyuan/p/13946496.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!