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