• 沒有找到結果。

100高中程式競賽決賽試題 高中組

N/A
N/A
Protected

Academic year: 2021

Share "100高中程式競賽決賽試題 高中組"

Copied!
5
0
0

加載中.... (立即查看全文)

全文

(1)

臺北市一

臺北市一

臺北市一

臺北市一 OO 學年度高級中等學校電腦程式設計競賽決賽試題

學年度高級中等學校電腦程式設計競賽決賽試題

學年度高級中等學校電腦程式設計競賽決賽試題

學年度高級中等學校電腦程式設計競賽決賽試題

(高中組

高中組

高中組

高中組)

說明 說明 說明 說明::: 1. 本試卷共有四題,每題 25 分。 2. 請記得隨時備份自己的程式。

試題

試題

試題

試題:

1. 合影隊型

合影隊型

合影隊型

合影隊型

問題敘述

問題敘述

問題敘述

問題敘述

酷酷鯊是一支新成立的棒球隊,共有 N 位球員。球隊裡原本氣氛融洽,大家 都是好麻吉,同心協力爭取年度總冠軍。然而,最近一連串的比賽不順利,球員 間開始出現摩擦。今天,棒球聯盟邀請了總統夫人到場開球。總統夫人是酷酷鯊 隊的球迷,因此她希望能和全體球員合影留念。拍照時,球員們會站成一列。為 了避免尷尬,球隊經理希望在安排拍照的隊型時,不要讓彼此有芥蒂的球員站在 一起。 舉例來說,如果有五位球員 A, B, C, D, E,其中 A 和 B 不願意站在一起,C 和 D 不願意站在一起,那麼 ABCDE 和 ABCED 不是適當的隊型,而 ACBDE 和 CADEB 則都是適當的隊型。 現在請你撰寫一個程式,協助球隊經理在總統夫人蒞臨之前,排出一個適當 的合影隊型吧!

輸入

輸入

輸入

輸入說明

說明

說明

說明

第一行為球員人數 (N),N ≤ 15。(球員代號從 A 開始編起。) 第二行為有摩擦的球員配對數 (M),M ≤ 50。 第三行開始,每一行有兩個字元,代表有摩擦的兩個球員代號。兩個字元間 以一個空格隔開。

輸出說明

輸出說明

輸出說明

輸出說明

請輸出以字典遞增排序方式的第一個適合隊型。如果沒有任何適合隊型,請 輸出 No Solution。計算時間不得超過 2 秒鐘。

(2)

輸入範例一

輸入範例一

輸入範例一

輸入範例一

5 2 A B C D

輸出範例一

輸出範例一

輸出範例一

輸出範例一

ACBDE

輸入範例二

輸入範例二

輸入範例二

輸入範例二

4 4 A B C D C A C B

輸出範例二

輸出範例二

輸出範例二

輸出範例二

No Solution

2.

Knapsack 解密問題

解密問題

解密問題

解密問題

在一個基於 subset sum 問題的實驗性公開金鑰密碼系統中, 某 甲想要加密一些文字資料給某乙, 甲取得乙的公開金鑰如右圖 共有 29 個 32 位元的整數, 其中第一個整數 p 為質數, 連同第 二個到第二十九個整數 a0 ~ a27 可以用來加密四個 ASCII 文字 資料, 由於每一個 ASCII 編碼的位元組只有 7 個位元是有意義 的, 我們將四個文字資料以 28 個位元 m27 ~ m0表示, 其中 mi∈{0,1}且 m27 ~ m21代表第一個字元, …, m6 ~ m0代表第四個字 元, 密文 0 27 * mod i i i j c m a p = =

, 其中 x mod p 代表整數 x 除以 p 的 餘數, 這個系統中加密鑰匙 ai是以下列方法計算的: * mod i i a =s b p, b = , 0 1 0 1 ( j) 1 mod i i j i b b k p = − =

+ + , i=1,2,…,27, 其中 k0 ~ k27∈{0,1}及 s 為祕密參數, 請設計一個演算法將右圖中密文 cj對應的訊息解出,

以上例而言(test2.txt), 解回的 ASCII 文字為“Biometrics (or biometric authentic cation) .... under surveillance.”, 測試檔案 test1.txt 解回的文字為“HelloWorld”。 已知 ai及 p, 由 ci解出 mi是一個已知的 NP 問題, 雖然在此例子中只有 28 個 ai, 暴 力破解困難度還不算太高,一般實際應用中至少有 1024 個 ai, 當然所使用的質數 p 也就至少有 1024 個位元, 本題中不希望你使用暴力破解, 所以要求你的程式能夠 p=3019271449 a[0]= 965341323 a[1]=2896023969 a[2]=1807435166 … a[25]= 2235759 a[26]= 969812841 a[27]= 974284359 c[0]= 629263857 c[1]= 636887368 c[2]= 525742329 … c[85]= 78690518 c[86]=1997428695 c[87]=1128693140

(3)

注意 注意 注意 注意:如果你沒有解出 mi但是計算出 b0, b1,…, b27的話也可以得到部份分數: 1. 基本上如果你求出 b0, b1,…, b27, 就可以很快地解密 c0, c1, …, cn; 也就是需要由 s, ai, 及ai=s* modbi p解出 bi。 2. 這個工作在一般整數群中可以很容易地修改求最大公因數 gcd(s,p) 的演算法, 找到 t 滿足 t s* =1 om dp, 將上式左右兩側乘上 t 可得t*a =i t s b b* * i= i modp, 即可由此式計算 bi。 3. 例如: p=23, s=5 可用右圖的輾轉 相除法求 gcd(23, 5)=1, 如右圖 所示, 進一步可以求出 t=14, 滿 足14*5=1 mod 23 4. 注意兩個 32 位元整數的乘積需要 64 位元才能表示 5. 因為目前使用的質數 p 太小, 使得目前這個系統的設計幾乎沒有安全性, 由 a0, a1,…, a27中就可以很快地推得 s, 所以你不需要知道任何祕密就可以解出訊息, 請注意每一組測試資料使用的 s 是不一樣的。

3. 資訊不完全之數字盤遊戲

資訊不完全之數字盤遊戲

資訊不完全之數字盤遊戲

資訊不完全之數字盤遊戲

數字盤是一個流傳很久也很受歡迎的遊戲,在方形盤裡通常會有一些標有數字的 方塊及一個空格,與空格上下或左右相鄰的方塊可以移到空格處,而原來位置會 變成空格,也就是說方塊移動規則是只能上下或左右移動。例如在 2x2 的數字盤 遊戲我們若要將圖(i)中的數字盤變成圖(ii)中的數字盤的一種方式之一是經由圖(iii) 中的 6 次移動而達成: 數學老師明斯基別出心裁地設計了一個 NxN 數字盤玩法是:例如當 N=4 時,在原 本應該要有編號 1 至 15 的 15 個方塊在其中,明斯基老師會任意地將其中的幾個 數字方塊用星號方塊取代(每個星號方塊變成都是一模一樣的),要學生莫菲將一個 隨意給定的數字盤初始盤面(如圖(iv)所示,其中數字方塊 2 與 10 分別由星號方塊 取代)移動到另一個指定的目標盤面(如圖(v)所示)。 23 = 4 * 5 + 3 …  5 = 1 * 3 + 2 …  3 = 1 * 2 + 1 … 3 2 = 2 * 1 + 0 最後整除時的除數即 為最大公因數 *(-1)+3可得到 -5 = -2 * 3 + 1 … 4 *2+4可得到 2 * 23 = 9 * 5 + 1 移項可得 -9 * 5 = 1 - 2 * 23 亦即 (23-9) * 5 = 1 + 3 * 23亦即 14 * 5 = 1 + 3 * 23

(4)

請來幫莫菲找出,當隨意給定一個 NxN 數字盤初始盤面,同時其中的幾個數字方 塊是用星號方塊取代時,移到另一個指定的目標盤面所需的最少移動次數。 程式輸入 程式輸入 程式輸入 程式輸入 程式輸入為一個隨意給定 NxN (N≤5)數字盤初始盤面(例如圖(iv))與指定的目標盤 面(例如圖(v)): 1 2 3 b 6 8 4 s s 1 2 3 4 s 6 s 8 b 上述第一行代表初始盤面(圖(iv)),第二行代表目標盤面。其中字母 s 代表星號方 塊、字母 b 代表盤面上的空格,輸入數字或字母字時以空白鍵隔開。 程式輸出 程式輸出 程式輸出 程式輸出 程式輸出為一整數,代表由初始盤面到目標盤面所需最少移動次數;若無法移動 至目標盤面則程式輸出-1。程式必須在 30 秒內執行完成。 【 【 【 【範例範例範例範例 一一一一】】】 輸入資料 輸入資料 輸入資料 輸入資料 1 2 3 b 6 8 4 s s 1 2 3 4 s 6 s 8 b 輸出資料 輸出資料 輸出資料 輸出資料 7 【 【 【 【範例二範例二範例二範例二】】】 輸入資料 輸入資料 輸入資料 輸入資料 b 1 3 4 5 2 6 8 9 10 7 12 13 14 11 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 b 輸出資料 輸出資料 輸出資料 輸出資料 6

(5)

4. 因式分解

因式分解

因式分解

因式分解

給任一個整數,將之因式分解是很常見的問題,但是不是可以將任一個整數 a 因 式分解成一個整數 b 的連乘積(意即 b 連乘 m 次後等於 a),就成為另一個更有趣的 問題。例如:(1) 若 a=1024,那可能 b=4, m=5 也有可能 b=2, m=10; (2) 若 a=99, 那 b=99, m=1。針對這樣的問題,一個遊戲規則如下:給定一個絕對值不為 1 的整 數 a,將 a 因式分解成 b 的 m 次方,m 越大獎金越高,為了拿最高獎金,需要找到 最大的 m 值,請你寫個程式來達成這個目標。(請注意:a, b 可以為負整數) Input: 一個測試檔(檔名為 in.txt),內每一列有 1 個整數(即 a),0 代表輸入資料結束。 Output: 對每筆測試資料依上述的說明求得 a=bm,並使得 m 為最大,然後產生一輸出檔(檔 名為 out.txt),輸出檔中每一列對應一筆輸入檔的資料,格式為:先產生編號(如 範例所示,依序為(1) (2) (3) …),再輸出兩個數字,其第一個數是 b,第二個 數是 m(b 與 m 中間以逗點隔開)。

Sample Input file: 21

34359738368 -25

0

Sample output file: (1) 21, 1

(2) 2, 35 (3) -25, 1

參考文獻

相關文件

」競賽,是結合生物科技與工程概念,以應用與設計為導向 的最新生物科學,為解決人類周遭生活問題。iGEM

So evaṃ samāhite citte parisuddhe pariyodāte anaṅgaṇe vigatūpakkilese mudubhūte kammaniye ṭhite āneñjappatte ñāṇadassanāya cittaṃ abhinīharati abhininnāmeti.

形成 形成 形成 研究問題 研究問題 研究問題 研究問題 形成問題 形成問題 形成問題 形成問題 的步驟及 的步驟及 的步驟及 的步驟及 注意事項 注意事項 注意事項

問題類型 非結構化問題 結構化問題 結構化問題 結構化問題 學習能力 不具學習能力 不具學習能力 自錯誤中學習 自錯誤中學習 學習能力 不具學習能力 不具學習能力

亞洲棒球錦標賽冠軍戰於本月 20 日在台中洲際棒球場開打,由中華隊對上亞錦賽 常勝軍日本隊。儘管日本隊首局先馳得點,中華隊在第 2 局又以一記滿貫砲立即追 回三分。最終比賽以

亞洲棒球錦標賽冠軍戰於本月 20 日在台中洲際棒球場開打,由中華隊對上亞錦賽 常勝軍日本隊。儘管日本隊首局先馳得點,中華隊在第 2 局又以一記滿貫砲立即追 回三分。最終比賽以

參賽者甲:我是第一次參賽的大文。我覺得主辦單位單憑問卷的問題,按照我

啦啦隊比賽 班會時間 環管週球類比賽 環星之夜(送舊) 系主任時間 導師會面時間. 班代會議