# 2019 學科能力競賽南市賽題目 ###### tags: `108學科能力競賽南市賽` **鳴謝:感謝周暘典提供協助** ## Intro 本次南市賽不同以往,捨棄了筆試觀念題+上機實作題的競賽方式,而是上午3小時+下午2小時的上機實作。由於題目不會在競賽結束後公開,以下分享的皆出於記憶,儘管無法完整還原,仍有不小參考價值。 註:所有題名皆自創,部分發想於實際題名或題目內容。 競賽方式:人工 judge😅,因此並無部分給分,僅有全對/全錯,具體方式為舉手表示欲檢測的題號,出題老師會走到座位旁,要求輸入兩組測資,沒有 TLE 問題,亦不須考量記憶體的使用,若執行時間較長僅需在作答時提出等待要求。答對後,評分老師會宣讀「X號,第X題,答對」,並由工作人員紀錄題號、答對時間於白板上,並要求參賽選手核對,比賽結束後依據答對題數及答對時間排序名次(應該是先比題數,若相同才比較早答對者)。 一開始對於人工 judge 並無什麼意見,但賽後一兩天看了他人的心得,才意識到嚴重性。南市賽使用人工 judge 並不是首次了,而這樣的評分方式一直存在許多爭議,因其對於參賽者而言**並不公平**。首先這樣的判定方式並無對於記憶體使用、耗時進行限制;此外,根據筆者觀察,每題的測資大約僅有三組左右,而印有輸入測資及答案的紙張會在作答時拿到參賽者眼前(除了時間回文是直接由評審老師念出數字),其實要背下測資及答案並不難;作答時,若結果正確,評審老師會要求展示程式碼,但其目的應該只是為了防範將答案寫死並輸出,通常只是匆匆一瞥;此外,不同參賽者在作答時,輸入的測資也並非相同,要使用哪組完全由評審老師指定,我自己在作答時就遇到第一次作答使用紙上的第一、二組測資沒過,再次作答時使用第二、三組的情事,亦有可能因為測資設計的疏漏,導致 A 使用有瑕疵的寫法輸出錯誤答案,而 B 恰好避開而得分。儘管強者選手可能不受此影響,但當今日某些校內初選都已使用 Online Judge 系統時,**為何南市賽卻依舊使用如此傳統的方式?** ref: <iframe src="https://www.facebook.com/plugins/post.php?href=https%3A%2F%2Fwww.facebook.com%2Fbangye.wu%2Fposts%2F10157152807163241&width=500" width="500" height="475" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true" allow="encrypted-media"></iframe> > [time=Fri, Nov 8, 2019 1:30 AM] > [time=Sat, Nov 9, 2019 12:40 AM] ---- ## 上午場 ### 第1題:時間迴文 時間格式:`HH:MM:SS`,其中 `0 ≤ HH ≤ 23` 。 迴文範例:`00:11:00` 輸入:起始小時 終止小時 輸出:符合迴文規則的時刻 總共個數 ### 第2題:你能找到嗎? 原題意為一個邊長a+b的正方形,將其重組以後變成一個邊長 b+(a+b) 和 a 的長方形,使得面積增加 1。但是定義不嚴謹(出來的形狀其實不是長方形),故以下改以數學式表達。 給定整數 N ,求符合以下二條件的兩整數 a、b。 1. a + b = N 2. a * (a + b) = (a + b) * (a + b) +1 ### 第3題:Fibonacci 數 給定兩正整數 `a` 及 `b`,其中 `1 ≤ a ≤ b ≤ 1000,000,000`,問在 a 至 b 中,共有幾個 Fibonacci 數? 印象中一組大數測資:``123456789 987654321`` ### 第4題:希臘占卜---生命靈數 輸入一組生日,如 196067 即表示1960年6月7日出生。 今定義 * 主命數:將生日的各位數字相加,若所得為二位數,則再次將兩位相加,直到所得為個位數。 * 天賦數:將生日的各位數字相加,取其個位數字。 * 先天數:將出生日的數字相加,若所得為兩位數,則再次相加直至所得為個位數。 * 星座數:根據不同星座,給予 1~12 中一個數字(各星座數皆爲獨特,不會重複) 註:此定義為了題目需要,與生命靈數原始定義不同。 求 1~9 的數字中,缺漏了哪幾個數字? ### 第5題:棄保效應 棄保效應:當候選人票數最低時,有一定比例的支持者會爲了避免浪費自己寶貴的一票,而轉投予次要喜歡的候選人。 原始題目中會提供各候選人發生棄保效應時,轉移的次序及比例。 給定三候選人 A,B,C,問棄保效應發生時,三位各自的票數及最終當選人。 ### 第6題:後序表達式 給定一後序表達式,計算其結果(有小數)。 ### 第7題:降冪多項式 輸入一多項式,輸出其降冪排列。 範例輸入: ``` 2 5 7 100 5 0 ``` 表示 `2X^5+7X^100+5`。 範例輸出: ``` 7X^100+2X^5+5 ``` ### 第8題:旋轉字串 輸入 N 行字串,將其旋轉 90 度後印出(包含所有合法字元,如空白、.、大小寫……) ### 第9題:全等多邊形校驗 輸入 2 組具有 N 個角的多邊形座標,求此兩個多邊形是否全等。(可翻轉、平移、旋轉) ### 第10題:走迷宮 給定一個 `N x M` 的迷宮,以「#」表示障礙物、「-」表示路,並給予起終點座標,輸出迷宮地圖,並以 S 標記起點、E 標記終點,並在行走的路徑上以 U、D、L、R 分別表示上下左右進行標記。 --- 中場休息:11:30~13:30 --- ## 下午場 ### 第1題:五階魔方陣 求兩個 5x5 的方陣,使其符合以下條件: 1. 任一直行、橫列的和相等 2. 任一對角線和相等 3. 任一九宮格之內,與中心格子相鄰的數字和相等 ### 第2題:4的組合 試用一計算式表達 1~50 中的整數,該計算式需符合下列條件: 1. 計算式中僅有 4 個 4 2. 可以使用 0.4 3. 允許的運算符號為 + - * / () √ ! ### 第3題:括號好神奇 給定一僅包含 `+` 及 `*` 的運算式,嘗試使用不同括號組合,使其結果有最大/最小值。 輸入:運算式 輸出:最大值 最小值 ### 第4題:字串加密 輸入一不包含空白的字串,將其加密,規則如下: 1. 大寫字母:將其轉爲小寫,再向後位移1。 範例:X → y 2. 小寫字母:依照電話按鍵,將其轉換為對照的號碼。 3. 其餘字元:維持原狀 註:電話按鍵對照如下 * 1=1 * abc=2 * def=3 * ghi=4 * jkl=5 * mno=6 * pqrs=7 * tuv=8 * wxyz=9 * 0=0 如圖 ![](https://i.imgur.com/XzxvucV.png) ### 第5題:最小值 給定 N 行長度不等之整數數列,求各列之最小值並輸出,最後再輸出所有列中的最小值。 範例輸入: ``` 3 5 7 0 2 5 -1 9 10 2 3 5 ``` 範例輸出: ``` 第1列的最小值是0 第2列的最小值是-1 第3列的最小值是2 所有列的最小值為-1 ``` ### 第6題:簡易數列操作 給定一長度未知的整數數列,最後一碼為控制碼。當控制碼為1時,輸出該數列之最小值;當控制碼為2時,輸出該數列的最大值;當控制碼為3時,輸出該數列的總和(不包括控制碼)。 範例輸入: ``` 2 4 -1 0 9 8 2 ``` 範例輸出: ``` 9 ``` ### 第7題:Highlight 給定一英文句子及未知列數、長度的字串,將各字串中包含句子中使用的單字保持原狀,其餘更改為「*」並輸出。 範例輸入: ``` This is a pencil bxcgpnisbeqs aqcdhjoigbnm gjiqThisopsd juqbdjpencil ``` 範例輸出: ``` ******is**** a*********** ****This**** ******pencil ``` > [time=Thu, Nov 7, 2019 12:54 AM] > [time=Sat, Nov 9, 2019 12:45 AM]