北一女中 101 學年度第一學期程式設計入門期末考程式題 班級 : 座號 : 姓名 : 1. 做答時間 :90 分鐘 ( pm :0 ~ 5:00 ), 請把握! 2. 請於 moodle 上填寫 高中生程式解題系統 之帳號. 於 高中生程式解題系統 上完成指定題目之一, 並將畫面抓下 (Alt+PrintScrn) 後, 貼上小畫家, 存成 finalexam_01_xxxx.jpg finalexam_02_xxxx.jpg 上傳至 moodle 4. 解出任一題者得六十分, 解出任兩題者得八十五分, 解出三題者除滿分外, 另可得到神秘禮物一份 - 0 -
c002: f91 McCarthy 是一個有名的資訊專家 他定義了一個遞迴的函數叫做 f91 它輸入一個正整 數 N 並且依據以下的規則傳回一個正整數 :. 如果 N <= 100, 那麼 f91(n) = f91( f91( N+11) ). 如果 N >= 101, 那麼 f91(n) = N-10 請你寫一個程式來計算 f91 每組測試資料一列 含有 1 個正整數 N( N <= 1000000) 輸入最多有 250000 組測試 資料 若 N=0 代表輸入結束 對每組測試資料輸出一列 f91(n), 輸出格式請參考 Sample Output 500 91 0 f91(500) = 490 f91(91) = 91-1 -
c079: 1046 - Peter's Smokes Peter 有 n 支紙煙, 他一支一支的抽並且把煙屁股留起來 當他有 k 支煙屁股 (k>1) 時 他可以把它們捲成一支新的紙煙 請問 Peter 共可以抽幾支紙煙? 每筆測試資料一列 每列有 2 個整數 n,k 對每一列輸入, 請輸出 Peter 共可以抽幾支紙煙 4 10 100 5 5 14 124-2 -
c022: 1078 - Odd Sum 給你一個範圍 a 到 b, 請你找出 a 與 b 之間所有奇數的和 例如 : 範圍 [, 9] 中所有奇數的和就是 + 5 + 7 + 9 = 24 輸入的第一列有一個整數 T (1 T 100), 代表以下有多少組測試資料 每組測試資料 為兩列, 包含兩個數 a 與 b (0 a b 100) 每組測試資料輸出一列, 內容為 a 及 b 間所有奇數的和 2 1 5 5 Case 1: 9 Case 2: 8 - -
d05: 10970 - Big Chocolate Mohammad 最近去瑞士 因為他很愛他的朋友們, 他決定要買巧克力請他們, 但是由於這麼高級的巧克力很貴 ( 你也知道 Mohammad 有點小氣!), 他只買得起一片巧克力, 很大的一片巧克力 ( 大到圖 1 也看不到全部 ) 來請他的朋友們 現在, 他要給他的朋友每人一小塊, 因為他相信人生而平等, 他要每一小塊都一樣大 這巧克力是由 M N 個單位大小的正方形所構成的 M N 矩形 你也可以假設 Mohammad 剛好有 M N 個朋友等著吃巧克力 切割巧克力時,Mohammad 可以以垂直或水平的方向沿著小方塊間的溝槽切割 切割開來的每一塊也要分別單獨地以同樣的方式來處理, 直到他有 M N 塊單位大小的巧克力為止 不幸的是, 由於他很懶, 只要能完成工作, 他希望切越少刀越好 你的目標就是要告訴他要把這些巧克力方塊全切開至少需要幾刀 圖 1. Mohammad 的巧克力 輸入有好幾筆測試資料 輸入的每一行有兩個整數 1 M 00 表示巧克力有幾列,1 N 00 表示巧克力有幾欄 重覆處理輸入直到檔案結束 針對每行輸入, 你的程式要輸出一行, 在該行中含有要把整個巧克力切成單位大小方塊所需要的最少刀數 2 2 1 1 1 5 0 4-4 -
d658: 1166 - Hello World! 當你剛學程式印出 Hello World! 時, 你總是很高興因為你還不曉得以後還會碰到多難多複雜的程式和演算法 現在, 假設你還不知道迴圈, 要印出 7 行的 Hello World!, 你只好使出最後的絕招 複製 然後貼上 如果你夠聰明的話, 你知道輸出 7 行的 Hello World! 只要複製貼上 次就夠了 如圖 1 所示, 當我們複製 1 行 Hello World! 然後貼上你可以得到 2 行 Hello World!, 當你複製這 2 行然後再次貼上可以得到 4 行, 最後再複製 行貼上就可以得到上述輸出 7 行的答案 ( 圖 4) 所以複製貼上 次就是我們想要的答案 現在要你輸出若干行的 Hello World!, 請回答出最少要複製貼上幾次才能達到你要的數量 當然, 你複製貼上的 Hello World! 不能被刪除掉 Figure 1 Figure 2 Figure Figure 4 有若干行輸入測資, 每行包括一個正整數 N(0<N<10001) 代表要印出的 Hello World! 數量 當 N 為負數時代表輸入結束, 這行不用做處理 對於每行測資請輸出一行, 格式為 Case X: Y,X 代表第幾筆測資,Y 代表最少要複製 貼上的次數 2 10-1 Case 1: 1 Case 2: 4-5 -
c004: Beat the Spread! 超級盃又來了, 為了打發中場休息時間, 大家就來下注最後的結 果會如何 大家下注的目標為兩隊最後的分數和, 或者兩隊最後 分數差的絕對值 給你這 2 個值, 你能推出這 2 隊最後的得分是多少嗎? 輸入的第一列有一個整數, 代表以下有多少組測試資料 每組測試資料一列, 有 2 個大於等 於 0 的整數 s, d,s 代表比賽結束時 2 隊分數的總和, d 代表比賽結束時 2 隊分數差的 絕對值 對每組測試資料輸出一列, 包含 2 個整數代表比賽結束時這 2 隊的分數, 分數大的在前 如 果沒有這樣的分數, 請輸出 impossible 請記得 : 美式足球的分數一定是大於等於 0 的整數 4 40 20 20 40 5 1 100 1 0 10 impossible 2 impossible - 6 -
c010: What is the Median? 在統計學的世界中, 中間數 (median) 扮演一個重要的角色 根據定義 : 中間數就是在一連串已由小到大排序的數字中, 排在中間的那一個數 例如 : 在 {1,,4,9,11} 中 4 就是中間數 萬一有偶數個數字, 我們定義中間數就是位於中間的那 2 個數的和除以 2( 而且只取整數部分 ) 例如: 在 {1,2,,6,7,8} 中 {,6} 是位於中間的 2 個數, 所以中間數就是 (+6)/2=4 輸入包含了 N 個 (N<10000) 的整數 對每一個輸入, 請輸出到現在為止已輸入的數的中間數 1 4 60 70 50 2 1 2 4 27 4-7 -
d25: Q10929: You can say 11 你的任務是, 給你一個正整數 N, 判定它是否是 11 的倍數 每列資料有一個正整數 N,N 最大可能到 1000 位數 若 N = 0 代表輸入結束 對每個輸入的數, 輸出是否為 11 的倍數 輸出格式請參考 Sample Output 1122 0800 297 245569 508297 11224 0 1122 is a multiple of 11. 0800 is a multiple of 11. 297 is a multiple of 11. 245569 is a multiple of 11. 508297 is a multiple of 11. 11224 is not a multiple of 11. - 8 -
c02: 0082 Perfection 一個整數 b 如果可以被另一個整數 a 整除 ( 在這裡 a>b), 我們稱 b 是 a 的一個因數 Perfect Number 是一個正整數並且等於其所有因數的和 例如 :6 和 28 都是 perfect number 因為 6=1+2+,28=1+2+4+7+14 如果一個正整數不是 perfect, 那他就是 deficient 或者是 abundant, 根據其所有因數的和是小於或大於這個數本身 因此,9 是 deficient 因為 1+<9 而 12 是 abundant 因為 1+2 ++4+6>12 請寫一個程式求出某一個數是 perfect, deficient 或者 abundant 有一連串 ( 不會超過 100 個 ) 的正整數 n(1 <= n < 60000),n=0 代表輸入結束 請參考 Sample Output 數字部分佔 5 個字元長度, 靠右對齊 與後方的敘述間空 2 個 空白格 若題目沒有特別說明, 則應該以多測資的方式讀取, 若不知如何讀取請參考 a001 的範例程 式 15 28 6 56 60000 22 496 0 PERFECTION OUTPUT 15 DEFICIENT 28 PERFECT 6 PERFECT 56 ABUNDANT 60000 ABUNDANT 22 DEFICIENT 496 PERFECT END OF OUTPUT - 9 -
c067: Box of Bricks 歲的小明喜歡玩他的方塊積木, 他總是把方塊疊在一起形成高度不一的方塊堆 然後他說 : 這是一面牆 5 歲的姊姊小美聽到了就跟小明說 : 真正的牆高度應該要一樣才行 小明聽了覺得有道理於是決定要搬動一些方塊使所有方塊堆的高度一樣 如下圖 由於小明是個懶惰的小孩, 他想要搬動最小數目的方塊以達成這個目的, 你能幫助他嗎? 輸入包含好幾組資料, 每組資料有 2 行, 第一行有一個數字 n, 代表有幾堆方塊 第二行有 n 個數字分別代表這 n 堆方塊的高度 h i 你可以假設 1<=n<=50 1<=h i <=100 方塊的總數一定可以整除堆數 n, 也就是說一定可以使所有的方塊堆同樣高度 如果輸入的 n=0, 代表輸入結束 對每一組輸入資料, 首先輸出一行這是第幾組測試資料, 下一行為 "The minimum number of moves is k." k 在這裡就是需搬動方塊最小的數目以使所有的方塊堆同一高度 每組測試資料後亦請空一行 請參考 Sample Output. 6 5 2 4 1 7 5 1 1 1 0 Set #1 The minimum number of moves is 5. Set #2 The minimum number of moves is 0. - 10 -