【資訊】APCS2016年第1次術科試題 - 高中藝能科 - 藝能科檔案下載 - 國立中科實驗高級中學教學單位網站

Download (0)

全文

(1)

105 年 3 月 5 日 程式設計實作題 1

第 1 題 成績指標

問題描述 一次考試中,於所有及格學生中獲取最低分數者最為幸運,反之,於所有不及格同 學中,獲取最高分數者,可以說是最為不幸,而此二種分數,可以視為成績指標。 請你設計一支程式,讀入全班成績(人數不固定),請對所有分數進行排序,並分別 找出不及格中最高分數,以及及格中最低分數。 當找不到最低及格分數,表示對於本次考試而言,這是一個不幸之班級,此時請你

印出:「worst case」;反之,當找不到最高不及格分數時,請你印出「best case」。

註:假設及格分數為 60,每筆測資皆為 0~100 間整數,且筆數未定。 輸入格式 第一行輸入學生人數,第二行為各學生分數(0~100 間),分數與分數之間以一個空 白間格。每一筆測資的學生人數為 1~20 的整數。 輸出格式 每筆測資輸出三行。 第一行由小而大印出所有成績,兩數字之間以一個空白間格,最後一個數字後無空 白; 第二行印出最高不及格分數,如果全數及格時,於此行印出 best case; 第三行印出最低及格分數,當全數不及格時,於此行印出 worst case。 範例一:輸入 10 0 11 22 33 55 66 77 99 88 44 範例一:正確輸出 0 11 22 33 44 55 66 77 88 99 55 66 (說明)不及格分數最高為 55,及格分數最低為 66。 範例二:輸入 1 13 範例二:正確輸出 13 13 worst case (說明)由於找不到最低及格分,因此第三行須印出「worst case」。

(2)

範例三:輸入 2 73 65 範例三:正確輸出 65 73 best case 65 (說明)由於找不到不及格分,因此第二行須印出「best case」。 評分說明 輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 2 秒, 依正確通過測資筆數給分。

(3)

105 年 3 月 5 日 程式設計實作題 1

第 2 題 矩陣轉換

問題描述 矩陣是將一群元素整齊的排列成一個矩形,在矩陣中的橫排稱為列 (row),直排稱 為行 (column),其中以 Xij 來表示矩陣 X 中的第 i 列第 j 行的元素。如圖一中, X32 = 6。 我們可以對矩陣定義兩種操作如下: 翻轉:即第一列與最後一列交換、第二列與倒數第二列交換、…依此類推。 旋轉:將矩陣以順時針方向轉 90 度。 例如:矩陣 X 翻轉後可得到 Y,將矩陣 Y 再旋轉後可得到 Z。 X Y Z 1 4 3 6 1 2 3 2 5 2 5 4 5 6 3 6 1 4 圖一 一個矩陣 A 可以經過一連串的旋轉與翻轉操作後,轉換成新矩陣 B。如圖二中, A 經過翻轉與兩次旋轉後,可以得到 B。給定矩陣 B 和一連串的操作,請算出原 始的矩陣 A。 翻轉 旋轉 旋轉 A → → → B 1 1 2 1 1 1 2 1 1 1 3 1 3 1 3 1 3 1 2 1 1 1 1 2 圖二 輸入格式 第一行有三個介於 1 與 10 之間的正整數 R, C, M。接下來有 R 行(line)是矩陣 B 的 內容,每一行(line)都包含 C 個正整數,其中的第 i 行第 j 個數字代表矩陣 Bij值。在矩陣內容後的一行有 M 個整數,表示對矩陣 A 進行的操作。第 k 個整數 mk 代表第 k 個操作,如果 mk = 0 則代表旋轉,mk = 1 代表翻轉。同一行的數字之間 都是以一個空白間格,且矩陣內容為 0~9 的整數。 輸出格式 輸出包含兩個部分。第一個部分有一行,包含兩個正整數 R' 和 C',以一個空白

(4)

隔開,分別代表矩陣 A 的列數和行數。接下來有 R' 行,每一行都包含 C' 個正 整數,且每一行的整數之間以一個空白隔開,其中第 i 行的第 j 個數字代表矩陣 Aij 的值。每一行的最後一個數字後並無空白。 範例一:輸入 3 2 3 1 1 3 1 1 2 1 0 0 範例一:正確輸出 3 2 1 1 1 3 2 1 (說明) 如圖二所示 範例二:輸入 3 2 2 3 3 2 1 1 2 0 1 範例二:正確輸出 2 3 2 1 3 1 2 3 (說明) 旋轉 翻轉 → → 1 2 3 3 2 1 3 2 1 2 1 1 2 3 3 3 1 2 評分說明 輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 2 秒, 依正確通過測資筆數給分。其中: 第一子題組共 30 分,其每個操作都是翻轉。 第二子題組共 70 分,操作有翻轉也有旋轉。

(5)

105 年 3 月 5 日 程式設計實作題 1

第 3 題 線段覆蓋長度

問題描述 給定一維座標上一些線段,求這些線段所覆蓋的長度,注意,重疊的部分只能算一 次。例如給定三個線段:(5, 6)、(1, 2)、(4, 8)、和(7, 9),如下圖,線段覆蓋長度為 6。 0 1 2 3 4 5 6 7 8 9 10 輸入格式: 第一列是一個正整數 N,表示此測試案例有 N 個線段。 接著的 N 列每一列是一個線段的開始端點座標和結束端點座標整數值,開始端點 座標值小於等於結束端點座標值,兩者之間以一個空格區隔。 輸出格式: 輸出其總覆蓋的長度 。 範例一:輸入 輸入 說明 5 此測試案例有 5 個線段 160 180 開始端點座標值與結束端點座標 150 200 開始端點座標值與結束端點座標 280 300 開始端點座標值與結束端點座標 300 330 開始端點座標值與結束端點座標 190 210 開始端點座標值與結束端點座標 範例一:輸出 輸出 說明 110 測試案例的結果 範例二:輸入 輸入 說明 1 此測試案例有 1 個線段 120 120 開始端點座標值與結束端點座標值 範例二:輸出 輸出 說明 0 測試案例的結果

(6)

評分說明 輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 2 秒, 依正確通過測資筆數給分。每一個端點座標是一個介於 0~M 之間的整數,每筆測 試案例線段個數上限為 N。其中: 第一子題組共 30 分,M<1000,N<100,線段沒有重疊。 第二子題組共 40 分,M<1000,N<100,線段可能重疊。 第三子題組共 30 分,M<10000000,N<10000,線段可能重疊。

(7)

105 年 3 月 5 日 程式設計實作題 1

4 題 血緣關係

問題描述 小宇有一個大家族。有一天,他發現記錄整個家族成員和成員間血緣關係的家族族 譜。小宇對於最遠的血緣關係 (我們稱之為"血緣距離") 有多遠感到很好奇。 右圖為家族的關係圖。0 是 7 的孩子,1、2 和 3 是 0 的孩子,4 和 5 是 1 的孩子,6 是 3 的孩 子。我們可以輕易的發現最遠的親戚關係為 4(或 5)和 6,他們的"血緣距離"是 4 (4~1,1~0, 0~3,3~6)。 給予任一家族的關係圖,請找出最遠的 "血緣距離"。你可以假設只有一個人是整個家族 成員的祖先,而且沒有兩個成員有同樣的小孩。 輸入格式 第一行為一個正整數n 代表成員的個數,每人以 0~n-1 之間惟一的編號代表。接著 的n-1 行,每行有兩個以一個空白隔開的整數 a 與 b (0 ≤ a,b ≤ n-1),代表 b 是 a 的 孩子。 輸出格式 每筆測資輸出一行最遠"血緣距離"的答案。 範例一:輸入 8 0 1 0 2 0 3 7 0 1 4 1 5 3 6 範例一:正確輸出 4 (說明) 如題目所附之圖,最遠路徑為 4->1->0->3->6 或 5->1-4->1->0->3->6,距離 為 4。 範例二:輸入 4 0 1 0 2 2 3 範例二:正確輸出 3 (說明) 最遠路徑為 1->0->2->3,距離為 3。 0 3 1 6 4 5 2 7

(8)

評分說明 輸入包含若干筆測試資料,每一筆測試資料的執行時間限制(time limit)均為 3 秒, 依正確通過測資筆數給分。其中, 第1 子題組共 10 分,整個家族的祖先最多 2 個小孩,其他成員最多一個小孩,2 ≤ n ≤ 100 。 2 子題組共 30 分,2 ≤ n ≤ 100。 3 子題組共 30 分,101 ≤ n ≤ 2,000。 4 子題組共 30 分,1,001 ≤ n ≤ 100,000。

數據

Updating...

參考文獻

相關主題 :