1. 程式人生 > >【PAT乙級】1072 開學寄語

【PAT乙級】1072 開學寄語

下圖是上海某校的新學期開學寄語:天將降大任於斯人也,必先刪其微博,卸其 QQ,封其電腦,奪其手機,收其 ipad,斷其 wifi,使其百無聊賴,然後,淨面、理髮、整衣,然後思過、讀書、鍛鍊、明智、開悟、精進。而後必成大器也!

jiyu.JPG

本題要求你寫個程式幫助這所學校的老師檢查所有學生的物品,以助其成大器。

輸入格式:

輸入第一行給出兩個正整數 N(≤ 1000)和 M(≤ 6),分別是學生人數和需要被查繳的物品種類數。第二行給出 M 個需要被查繳的物品編號,其中編號為 4 位數字。隨後 N 行,每行給出一位學生的姓名縮寫(由 1-4 個大寫英文字母組成)、個人物品數量 K(0 ≤ K ≤ 10)、以及 K 個物品的編號。

輸出格式:

順次檢查每個學生攜帶的物品,如果有需要被查繳的物品存在,則按以下格式輸出該生的資訊和其需要被查繳的物品的資訊(注意行末不得有多餘空格):

姓名縮寫: 物品編號1 物品編號2 ……

最後一行輸出存在問題的學生的總人數和被查繳物品的總數。

輸入樣例:

4 2
2333 6666
CYLL 3 1234 2345 3456
U 4 9966 6666 8888 6666
GG 2 2333 7777
JJ 3 0012 6666 2333

輸出樣例:

U: 6666 6666
GG: 2333
JJ: 6666 2333
3 5

個人理解

這題思路就是用一個bool陣列記錄違禁物品編號,然後逐個檢查學生即可。有一個要注意的點是物品編號的輸出都是4位數字。

實現程式碼

#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <algorithm>
#include <iostream>
#define ll long long
#define ep 1e-5
#define INF 0x7FFFFFFF

const int maxn = 10005; 

using namespace std;

int main() {
	//定義 
	int N, M, ban_list[maxn];
	bool is_ban[maxn];
	
	//初始化 
	memset(is_ban, 0, sizeof(is_ban));
	cin >> N >> M;
	
	//輸入禁止編號 
	while (M --) {
		int ban_id;
		cin >> ban_id;
		is_ban[ban_id] = true;
	}
	
	//對學生進行排查 
	int stu_cnt = 0, staff_cnt = 0;
	while (N --) {
		string name;
		int num, check_id, ban_cnt = 0;
		//輸入學生姓名和物品數量 
		cin >> name >> num;
		//對每個物品進行檢查 
		while (num --) {
			cin >> check_id;
			if (is_ban[check_id]) {
				staff_cnt ++;
				ban_list[ban_cnt++] = check_id;
			}
		}
		//如果存在違禁物品就輸出 
		if (ban_cnt > 0) {
			stu_cnt ++;
			cout << name << ":";
			for (int i = 0; i < ban_cnt; i ++) {
				printf(" %04d", ban_list[i]);
			}
			cout << endl;
		}
	}
	cout << stu_cnt << " " << staff_cnt << endl;
	
	return 0;
}

總結

學習不息,繼續加油

相關推薦

PAT乙級1072 開學寄語

下圖是上海某校的新學期開學寄語:天將降大任於斯人也,必先刪其微博,卸其 QQ,封其電腦,奪其手機,收其 ipad,斷其 wifi,使其百無聊賴,然後,淨面、理髮、整衣,然後思過、讀書、鍛鍊、明智、開悟、精進。而後必成大器也! 本題要求你寫個程式幫助這所學校的老師檢查所有

PAT1072 開學寄語(20 分)

下圖是上海某校的新學期開學寄語:天將降大任於斯人也,必先刪其微博,卸其 QQ,封其電腦,奪其手機,收其 ipad,斷其 wifi,使其百無聊賴,然後,淨面、理髮、整衣,然後思過、讀書、鍛鍊、明智、開悟、精進。而後必成大器也! 本題要求你寫個程式幫助這所學校的老師檢查所有

PAT乙級1090 危險品裝箱

集裝箱運輸貨物時,我們必須特別小心,不能把不相容的貨物裝在一隻箱子裡。比如氧化劑絕對不能跟易燃液體同箱,否則很容易造成爆炸。 本題給定一張不相容物品的清單,需要你檢查每一張集裝箱貨品清單,判斷它們是否能裝在同一只箱子裡。 輸入格式: 輸入第一行給出兩個正整數:N (≤10​4​

PAT乙級1089 狼人殺-簡單版

以下文字摘自《靈機一動·好玩的數學》:“狼人殺”遊戲分為狼人、好人兩大陣營。在一局“狼人殺”遊戲中,1 號玩家說:“2 號是狼人”,2 號玩家說:“3 號是好人”,3 號玩家說:“4 號是狼人”,4 號玩家說:“5 號是好人”,5 號玩家說:“4 號是好人”。已知這 5 名玩家中有 2 人扮演狼人角

PAT乙級1088 三人行

子曰:“三人行,必有我師焉。擇其善者而從之,其不善者而改之。” 本題給定甲、乙、丙三個人的能力值關係為:甲的能力值確定是 2 位正整數;把甲的能力值的 2 個數字調換位置就是乙的能力值;甲乙兩人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。請你指出誰比你強應“從之”,誰比你弱應“改之”

PAT乙級1087 有多少不同的值

當自然數 n 依次取 1、2、3、……、N 時,算式 ⌊n/2⌋+⌊n/3⌋+⌊n/5⌋ 有多少個不同的值?(注:⌊x⌋ 為取整函式,表示不超過 x 的最大自然數,即 x 的整數部分。) 輸入格式

PAT乙級1086 就不告訴你

做作業的時候,鄰座的小盆友問你:“五乘以七等於多少?”你應該不失禮貌地圍笑著告訴他:“五十三。”本題就要求你,對任何一對給定的正整數,倒著輸出它們的乘積。 輸入格式: 輸入在第一行給出兩個不超過 1000 的正整數 A 和 B,其間以空格分隔。 輸出格式: 在一行中倒著輸出 A

PAT乙級1084 外觀數列

外觀數列是指具有以下特點的整數序列: d, d1, d111, d113, d11231, d112213111, ... 它從不等於 1 的數字 d 開始,序列的第 n+1 項是對第 n 項的描述。比如第 2 項表示第 1 項有 1 個 d,所以

PAT乙級1083 是否存在相等的差

給定 N 張卡片,正面分別寫上 1、2、……、N,然後全部翻面,洗牌,在背面分別寫上 1、2、……、N。將每張牌的正反兩面數字相減(大減小),得到 N 個非負差值,其中是否存在相等的差? 輸入格式: 輸入第一行給出一個正整數 N(2 ≤ N ≤ 10

PAT乙級1081 檢查密碼

本題要求你幫助某網站的使用者註冊模組寫一個密碼合法性檢查的小功能。該網站要求使用者設定的密碼必須由不少於6個字元組成,並且只能有英文字母、數字和小數點 .,還必須既有字母也有數字。 輸入格式: 輸入第一行給出一個正整數 N(≤ 100),隨後 N 行,每行給出一個使用者設

PAT乙級1080 MOOC期終成績

對於在中國大學MOOC(http://www.icourse163.org/ )學習“資料結構”課程的學生,想要獲得一張合格證書,必須首先獲得不少於200分的線上程式設計作業分,然後總評獲得不少於60分(滿分100)。總評成績的計算公式為 G=(G​mid−term​​×40%+

PAT乙級1079 延遲的迴文數

給定一個 k+1 位的正整數 N,寫成 a​k​​⋯a​1​​a​0​​ 的形式,其中對所有 i 有 0≤a​i​​<10 且 a​k​​>0。N 被稱為一個迴文數,當且僅當對所

PAT乙級1082 射擊比賽

本題目給出的射擊比賽的規則非常簡單,誰打的彈洞距離靶心最近,誰就是冠軍;誰差得最遠,誰就是菜鳥。本題給出一系列彈洞的平面座標(x,y),請你編寫程式找出冠軍和菜鳥。我們假設靶心在原點(0,0)。 輸入格式: 輸入在第一行中給出一個正整數 N(≤ 10 000)。隨後 N 行,每行按

PAT乙級1054 求平均值

本題的基本要求非常簡單:給定 N 個實數,計算它們的平均值。但複雜的是有些輸入資料可能是非法的。一個“合法”的輸入是 [−1000,1000] 區間內的實數,並且最多精確到小數點後 2 位。當你計算平均值的時候,不能把那些非法的資料算在內。 輸入格式: 輸入第一行給出正整

PAT乙級1056 組合數的和

給定 N 個非 0 的個位數字,用其中任意 2 個數字都可以組合成 1 個 2 位的數字。要求所有可能組合出來的 2 位數字的和。例如給定 2、5、8,則可以組合出:25、28、52、58、82、85,它們的和為330。 輸入格式: 輸入在第一行中給出 N(1 < 

PAT乙級1060 愛丁頓數

英國天文學家愛丁頓很喜歡騎車。據說他為了炫耀自己的騎車功力,還定義了一個“愛丁頓數” E ,即滿足有 E 天騎車超過 E 英里的最大整數 E。據說愛丁頓自己的 E 等於87。 現給定某人 N 天的騎車距離,請你算出對應的愛丁頓數 E(≤N)。 輸入格式: 輸入第一行給出

PAT乙級1062 最簡分數

一個分數一般寫成兩個整數相除的形式:N/M,其中 M 不為0。最簡分數是指分子和分母沒有公約數的分數表示形式。 現給定兩個不相等的正分數 N​1​​/M​1​​ 和 N​2​​/M​2​​,要求你按從小到大的順序列出它們之間分母為 K 的最簡分數。 輸入格式: 輸入在一

PAT乙級1065 單身狗

“單身狗”是中文對於單身人士的一種愛稱。本題請你從上萬人的大型派對中找出落單的客人,以便給予特殊關愛。 輸入格式: 輸入第一行給出一個正整數 N(≤ 50 000),是已知夫妻/伴侶的對數;隨後 N 行,每行給出一對夫妻/伴侶——為方便起見,每人對應一個 ID 號,為 5

PAT乙級1066 影象過濾

影象過濾是把影象中不重要的畫素都染成背景色,使得重要部分被凸顯出來。現給定一幅黑白影象,要求你將灰度值位於某指定區間內的所有畫素顏色都用一種指定的顏色替換。 輸入格式: 輸入在第一行給出一幅影象的解析度,即兩個正整數 M 和 N(0<M,N≤500),另外是待過濾的

PAT乙級1068 萬綠叢中一點紅

對於計算機而言,顏色不過是畫素點對應的一個 24 位的數值。現給定一幅解析度為 M×N 的畫,要求你找出萬綠叢中的一點紅,即有獨一無二顏色的那個畫素點,並且該點的顏色與其周圍 8 個相鄰畫素的顏色差充分大。 輸入格式: 輸入第一行給出三個正整數,分別是 M 和 N(≤ 1