PAT-B 1059 C語言競賽【模擬】
PAT-B 1059 C語言競賽
https://pintia.cn/problem-sets/994805260223102976/problems/994805269828059136
題目
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?
分析
模擬題,具體細節看程式,註釋比較清楚。
C++程式
#include<iostream>
#include<map>
using namespace std;
const int N=10005;
bool prime[N];//prime[i]記錄i是否為素數
//素數篩選
void maketable(int n)
{
for(int i=2;i<n;i++)
if(!prime[i])
{
for(int j=i+i;j<n;j+=i)
prime[j]=true;
}
}
struct Node{
Node(){}
Node(int rank,bool flag):rank(rank),flag(flag){}
int rank;//排名
bool flag;//是否被查詢
};
map<int,Node>d;
int main()
{
maketable(N);//打表
int n,k,id;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&id);
d[id]=Node(i,false);
}
scanf("%d",&k);
for(int i=1;i<=k;i++)
{
scanf("%d",&id);
printf("%04d: ",id);//細節
if(d.count(id))
{
if(d[id].flag)
{
printf("Checked\n");//已經被查詢過了
continue;
}
if(d[id].rank==1)//如果是冠軍
printf("Mystery Award\n");
else if(!prime[d[id].rank])//排名是素數
printf("Minion\n");
else
printf("Chocolate\n");
d[id].flag=true;//標記已被查詢過
}
else//id不存在
printf("Are you kidding?\n");
}
return 0;
}
相關文章
- C語言模擬試題1C語言
- C語言模擬試題2C語言
- C語言模擬試題3C語言
- C語言模擬試題4C語言
- C語言模擬試題5C語言
- C語言模擬試題6C語言
- C語言實戰!!!:商城系統模擬C語言
- 關於c語言模擬c++的多型C語言C++多型
- NOIP模擬賽(10.17):語言,色球,斐波,偶數
- C語言上機測試模擬題-1C語言
- C語言上機測試模擬題2C語言
- c語言模擬Python的命名引數C語言Python
- (C語言)簡單明瞭的 陣列模擬棧+ (C++)陣列模擬棧C語言陣列C++
- C語言50題之模擬實現atof、atoiC語言
- 10.6 模擬賽(NOIP 模擬賽 #9)
- 模擬賽
- 5.4 模擬賽
- 8.5 模擬賽
- 8.2 模擬賽
- 9.2 模擬賽
- 模擬賽 2
- 大語言模型微調資料競賽,冠-軍!模型
- PAT-B 1067 試密碼【模擬】密碼
- C++ 競賽排序C++排序
- 自己用C語言寫的一個模擬退火演算法C語言演算法
- 模擬比賽-14屆研究生組C++省賽C++
- 7月模擬賽
- 10.7 模擬賽
- NZOJ 模擬賽5
- CSP模擬賽#34
- 10.13 模擬賽
- NOIP模擬賽2
- CSP模擬賽 #39
- CSP模擬賽 #42
- 11.3 模擬賽
- 模擬賽雜題
- NOIP模擬賽 #4
- 9.12 模擬賽