PAT菜雞進化史 乙級 1058

2021-09-12 04:03:36 字數 1984 閱讀 9007

批改多選題是比較麻煩的事情,本題就請你寫個程式幫助老師批改多選題,並且指出哪道題錯的人最多。

輸入在第一行給出兩個正整數 n(≤ 1000)和 m(≤ 100),分別是學生人數和多選題的個數。隨後 m 行,每行順次給出一道題的滿分值(不超過 5 的正整數)、選項個數(不少於 2 且不超過 5 的正整數)、正確選項個數(不超過選項個數的正整數)、所有正確選項。注意每題的選項從小寫英文本母 a 開始順次排列。各項間以 1 個空格分隔。最後 n 行,每行給出乙個學生的答題情況,其每題答案格式為(選中的選項個數 選項1 ……),按題目順序給出。注意:題目保證學生的答題情況是合法的,即不存在選中的選項數超過實際選項數的情況。

按照輸入的順序給出每個學生的得分,每個分數佔一行。注意判題時只有選擇全部正確才能得到該題的分數。最後一行輸出錯得最多的題目的錯誤次數和編號(題目按照輸入的順序從 1 開始編號)。如果有並列,則按編號遞增順序輸出。數字間用空格分隔,行首尾不得有多餘空格。如果所有題目都沒有人錯,則在最後一行輸出too ******

343

42 a c25

1 b5

32 b c15

4 a b d e

(2 a c)

(2 b d)

(2 a c)

(3 a b e)

(2 a c)

(1 b)

(2 a b)

(4 a b d e)

(2 b d)

(1 e)

(2 b c)

(4 a b c d)

365

2234

主要問題就是對括號對的判斷,來確定哪些答案是哪些題目的,用左括號來判斷就好啦~

#include

#include

#include

using

namespace std;

struct question

;int

main()

}// input the students' answer

vector<

int>

wrong_num

(question_num)

; vector<

int>

stu_score

(stu_num)

;int stu_choose;

for(

int i =

0; i < stu_num; i++);

cin >> stu_choose;

if(stu_choose != q[j]

.right_num)

else

} stu_score[i]

+= q[j]

.score;}}

}// display the result

// students' score

for(

int i =

0; i < stu_num; i++

) cout << stu_score[i]

<< endl;

// maximum wrong times and the question

int max_wrong_num =0;

for(

int i =

0; i < question_num; i++

) max_wrong_num = max_wrong_num < wrong_num[i]

? wrong_num[i]

: max_wrong_num;if(

!max_wrong_num)

cout << max_wrong_num;

for(

int i =

0; i < question_num; i++)}

return0;

}

PAT菜雞進化史 乙級 1001

卡拉茲 callatz 猜想 對任何乙個正整數 n,如果它是偶數,那麼把它砍掉一半 如果它是奇數,那麼把 3n 1 砍掉一半。這樣一直反覆砍下去,最後一定在某一步得到 n 1。卡拉茲在 1950 年的世界數學家大會上公布了這個猜想,傳說當時耶魯大學師生齊動員,拼命想證明這個貌似很傻很天真的命題,結果...

PAT菜雞進化史 乙級 1005

卡拉茲 callatz 猜想已經在1001中給出了描述。在這個題目裡,情況稍微有些複雜。當我們驗證卡拉茲猜想的時候,為了避免重複計算,可以記錄下遞推過程中遇到的每乙個數。例如對 n 3 進行驗證的時候,我們需要計算 3 5 8 4 2 1,則當我們對 n 5 8 4 2 進行驗證的時候,就可以直接判...

PAT菜雞進化史 乙級 1013

令 p ip i pi 表示第 i 個素數。現任給兩個正整數 m n 10 4 請輸出p mp m pm 到 p np n pn 的所有素數。輸入在一行中給出 m 和 n,其間以空格分隔。輸出從 p mp m pm 到 p np n pn 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行...