• 沒有找到結果。

104北市軟體競賽決賽題目 高中組

N/A
N/A
Protected

Academic year: 2021

Share "104北市軟體競賽決賽題目 高中組"

Copied!
7
0
0

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

全文

(1)

臺北市一

臺北市一

臺北市一

臺北市一 O 四

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

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

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

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

(高中組

高中組

高中組

高中組)

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

試題

試題

試題

試題 1:

:找反射點

找反射點

找反射點

找反射點

問題敘述

問題敘述

問題敘述

問題敘述

有一個封閉的凸多邊形,其內每個邊都是由可以反射光線的鏡子構成,今由 某個邊上的某點,以某個角度打出一道光後,這光會一直在這凸多邊形區域內不 斷地反射,但若這光是剛好打中這凸多邊形區域的任一個頂點(vertex),那這光就 會消失掉。譬如,下圖中,S 點發射出的光,經過兩次反射後打到 T 點(先經過 I 點反射後,再打到 J 點,再反射到 T 點)。 根據上述的情境,我們打算設計一個遊戲:假設 T 點有個目標物,由某個邊 上的某 S 點發射一光束,若這光束可依設定的反射次數打中目標物 T,那就贏得這 個遊戲。你現在的任務就是寫一個程式來協助計算目標物的座標。 輸入說明: 輸入包含數組測試資料(至多 100 組),每組資料的第一列有兩個數值 n 跟 m, 3≤n≤10, 0≤m≤1000, n 代表這凸多邊形區域的頂點數目,m 代表反射次數(當 n=0 且 m=0 時表示輸入資料結束)。下一列是光束發射點 S 的座標與發射角度(θ),S 一定 在某個邊上,且不會是任何一個頂點;發射角 θ 是指發射出的光束跟 X 軸的夾角, 逆時針量測,單位為度,0≤θ≤360。接下來有 n 列,依逆時針的方向描述每個頂點 的座標位置,為了簡化設計,假設第一個頂點的座標位置是(0, 0)。 輸出說明:(顯示在螢幕上) (程式必須在 1 秒內執行完畢,否則不計分)

(2)

對每組測試資料,輸出光束反射 m 次後,打中某邊上的點(即 T 點)之座標; 如果光束打中某個頂點,就輸出“fail”;一列顯示一組測試資料的輸出。 注意:計算過程中,精準度採 double,而最後輸出精準度四捨五入到小數下第二 位。 程式執行範例 程式執行範例 程式執行範例 程式執行範例:::: 輸入範例: 4 3 2 0 0 0 0 5 0 5 5 0 5 4 0 2.5 0 45 0 0 5 0 5 5 0 5 0 0 輸出範例: fail 5.00 2.50

試題

試題

試題

試題

2.

小偷的智慧

小偷的智慧

小偷的智慧

小偷的智慧

問題敘述

問題敘述

問題敘述

問題敘述

史恩康納萊和凱薩琳麗塔瓊絲演過一部電影叫做『將計就計』,片中男女主角扮演 神偷,在千禧虫來臨的那一刻洗劫雙子星大樓上防衛最森嚴的銀行。接下來這個 情節發生在一百年後,在全球最高的 303 大樓的頂樓有一個防衛森嚴的銀行,裡 面有許多企業與個人存放在一個一個透明保險櫃裡的 TeraCoin,假設有 p 個保險 櫃,存放著 a1, a2, …., ap 金額的 TeraCoin,保險櫃有一個奇特的保全機制, 如果你要拿走存放在某一個保險櫃的 TeraCoin,你必須全部拿走不可以只拿部份, 否則必死,而且 TeraCoin 不能分開存放,它們會自動結合在一起,除非有特殊 機具,否則沒有辦法分開,好消息是 TeraCoin 其實很輕,比現在的紙幣輕不知 道多少倍,真是造福了這些神偷,可以盡情的取用,高興起來把所有保險櫃裡的 TeraCoin 都一起拿走也是一個人可以負荷的,不過接下來離開這棟大樓唯一的方 式需要經過三部電梯的轉乘,這幾部電梯是有設計過的,它對於所載運的

(3)

TeraCoin 有特別的機制可以驗出,它可以由你攜帶的 TeraCoin 中分出一定數額 ni 作為載運費用,然後剩下的 TeraCoin 必須要是 mi 的整數倍,電梯才能夠啟 動,因為 TeraCoin 攜帶時會自動合併,雖然事先就已經知道 (n1,m1), (n2,m2), (n3,m3) 的數值和順序,但是不能夠直接留下 n1, n2, n3 的 TeraCoin 來作為載運 費用,所以問題就變成他們在拿的時候就要計算清楚,劫取的 {aj} 的總和需要能 夠順利的讓這三個電梯啟動…. 請替這個小偷寫一個程式,在看到 a1, a2, …., ap 時很快地算出到底該怎麼拿才 能夠順利逃脫,還是根本就走不了,還好那個年代的富豪們除了愛炫富之外還是 很仁慈的,如果你在銀行中一毛都不拿只是參觀一下,電梯都能夠免費順利運作。 右圖是產生測試資料 ai 的 C 程式: 請實作並且驗證下方所產生的 20 個 資料是正確的

輸入說明

輸入說明

輸入說明

輸入說明

s q p n1 m1 n2 m2 n3 m3

輸出說明

輸出說明

輸出說明

輸出說明

total ai1, ai2, ai3,... i1, i2, i3, …. total 為取得 TeraCoin 的總和, ai1, ai2, ai3, … 為取走的保險櫃金額, i1 > i2 > i3 > … 如果無解,輸出 0 即可,多組解時輸 出任意一組右圖是簡易的測資,實際測 資中參數的範圍如下: p 的範圍在 10~1000 之間,ai 的範圍在 1~q 之間, q 的範圍在 50~1000 之間,mi 為 2~100 之間的質數,0≤ni<5mi,時間限制 30 秒

試題

試題

試題

試題 3. 神奇的農地

神奇的農地

神奇的農地

神奇的農地

問題敘述

問題敘述

問題敘述

問題敘述

布魯斯是中南美洲某一平原上一位栽種蘋果的農夫,特別地是他擁有一塊神奇的 農地,其形狀剛好是個凸多邊形(也就是農地的邊界上有數個頂點,而每一個頂點 與在邊界上相鄰的其它兩個頂點是分別藉由一條為直線的邊相連,每一個頂點與

static int state = 0; void set(int x) { state = x; }

int next(int q) {

state = (state * 0x343FD + 0x269EC3) & 0x7FFFFFFF; return (state >> 20) % q + 1;

}

int i, s=123, q=50; set(s);

for (i=0; i<20; i++) printf("%d ", next(q));

28 41 43 20 23 5 22 43 11 5 27 47 31 42 2 12 23 25 23 40 程式輸入 程式輸入 程式輸入 程式輸入: 123 50 20 7 11 20 13 10 17 程式輸出 程式輸出 程式輸出 程式輸出: 326 31 47 27 5 11 43 22 5 23 43 41 28 13 12 11 10 9 8 7 6 5 3 2 1 程式輸入 程式輸入 程式輸入 程式輸入: 123 50 30 7 11 20 13 5 17 程式輸出 程式輸出 程式輸出 程式輸出: 0

(4)

其接連的兩條直線的邊所成的內角小於 180°);而農地邊界上每一個頂點可以在直 角座標系上以一個點(x, y)來表示,其中 x 與 y 可為任意的“實數值”。很神奇的是, 在這一塊農地內(包括邊界),布魯斯只能在特定座標(a, b)位置(其中 a 與 b 必須同 是為“整數值”時)種下的蘋果樹才可能長出蘋果出來,而種在該位置的蘋果樹的年 度獲益單位剛好為座標(a, b)的一種線性組合,表示成 c×a+d×b (其中 c 與 d 可為任 意的“實數值”;而年度獲益有可能為正值、零或負值)。 聰明的你(妳),請幫布魯斯寫一個程式,計算當他要種下一棵蘋果樹時,要種 在那一個位置才有最大的年度獲益?

輸入

入說明

說明

說明

說明

第一行輸入有一個整數值 n (3≦n≦20)與兩個實數值 c 與 d (-100.0≦c≦100.0 且-100.0≦d≦100.0),都以空格間隔;其中整數值 n 代表農地邊界上的頂點個數, 而兩個實數值代表題目描述中計算年度獲益的線性組合式的係數 c 與 d。 從第二行起共有 n 行,每一行輸入有兩個實數值,代表邊界上的一個頂點的座標(si, pi),-100,000.0≦si≦100,000.0 且-100,000.0≦pi≦100,000.0;注意,這些頂點的輸 入順序並不一定會依照順時針方向或逆時針方向等特定順序。

輸出說明

輸出說明

輸出說明

輸出說明

為一個實數值(準確到小數第一位)與兩個整數值,都以空格間隔,它們依序代 表被栽種蘋果樹的年度獲益與其位置對應的座標;程式必須在 30 秒內完成。 輸入範例一 輸入範例一 輸入範例一 輸入範例一 輸出範例一輸出範例一輸出範例一輸出範例一 3 0.0 3.0 0.0 0.0 75000.7 0.0 0.0 10.3 30.0 0 10

試題

試題

試題

試題 4. 走迷宮

走迷宮

走迷宮

走迷宮

(只需答案檔只需答案檔只需答案檔只需答案檔, Output Only)

問題敘述

問題敘述

問題敘述

問題敘述

(5)

左左和右右是一對雙胞胎,她們有很多相同的習慣,吃飯用右手,寫字用左手, 早上六點就起床,晚上十點就睡覺。有一天,爸爸帶她們去兒童樂園玩,玩到迷 宮關卡時,爸爸突然發現她們有一個不同的習慣!左左走迷宮時,一定會按照北、 東、南、西的順序嘗試;而右右走迷宮時,則會先直走,沒辦法走時會向右轉。 這裡我們假設一開始的時候,兩個人一樣習慣面向北邊。 以 (3, 0) 為起點, (0, 3) 為終點,以下用三個範例來說明兩人行走的模式(左 邊的圖是左左的走法): 左左從起點 (3, 0) 會一路向北,走到 (0, 0) 沒路的時候,下一個選擇是向東, 然後一路走到終點 (0, 3),她的路線長為 6 步。右右從起點 (3, 0) 會一路直走,走 到 (0, 0) 沒路的時候,下一個選擇是右轉,然後一路走到終點 (0, 3)。兩個人玩這 個迷宮的走法是完全相同的。 左左向北一步之後往東,接著因為她優先選擇向北,所以會向北到底 (0, 1), 此時無法往東(有障礙)、南(來路),所以往西,往西到 (0, 0) 發現是死路,只 好後退兩步回 (1, 1),再選擇向東,然後在 (1, 3) 向北,直到終點。右右往前之後 遇到障礙右轉,又遇到障礙所以再右轉,走到 (3, 1) 之後右轉兩次都是走過的路, 右轉到第三次發現可以往前,然後一路直走到 (3, 3),同樣右轉三次後,直走到終 點。 0 1 2 3 0 3 4 5 6 1 2 2 1 3 0 0 1 2 3 0 3 4 5 6 1 2 2 1 3 0 0 1 2 3 0 6 1 3 4 5 2 1 2 3 0 0 1 2 3 0 8 1 7 2 1 2 6 3 0 3 4 5 0 1 2 3 0 4 5 6 1 3 2 2 3 0 1 0 1 2 3 0 4 5 6 1 3 2 2 3 0 1

(6)

左左的走法和第一例相似。右右一開始就右轉,走到底 (3, 2) 是一條死路(右 轉三次都沒路可走),只好(左轉三次)倒退回前一步,此時右轉三次發現有路, 走到底 (0, 1) 後右轉直達終點。 現在,請你依照下列要求設計出五道大小為 10×10 的迷宮關卡: (1) maze1.txt : 起點為 (9, 0),終點為 (0, 9),且左左和右右的走法相差 30 步以上。 (2) maze2.txt :起點為 (4, 4),終點為 (5, 5),且左左和右右的走法相差 30 步 以上。 (3) maze3.txt :起點為 (0, 9),終點為 (9, 0),且左左和右右的走法相差恰好 20 步。 (4) maze4.txt :起點為 (2, 7),終點為 (8, 0),且左左和右右的走法相差 60 步 以上。 (5) maze5.txt :起點為 (2, 0),終點為 (2, 9),且左左和右右的走法都恰好是 15 步。

輸出

出說明

說明

說明

說明

上述五個關卡的檔名請依序取名為 mazeX.txt,其中 X = 1, 2, …, 5。檔案中以 '.' 代表道路,'X' 代表障礙。舉上面三個迷宮為例,其檔案內容如下: 例一 例二 例三 4 3 0 0 3 .... .... .XXX .... 4 3 0 0 3 ..X. X... ..X. .... 4 3 0 0 3 .... ..X. X.XX ...X 【注意】 (1) 若因檔案內容不符合指定格式而造成評分程式無法讀取,將檔案不予計 分。 (2) 若左左或右右任一人無法從起點走到終點,該檔案將不予計分。 本題並不規定要寫程式,但你可以運用程式協助你了解左左和右右走迷宮的模式, 並設計出迷宮。

(7)

參考文獻

相關文件

A-1展現課程設計能力(教學檔案指標) A-2研擬適切的教學計畫(教學檔案指標) A-3精熟任教學科領域知識.. A-4清楚呈現教材內容

點選「檔案合併並檢 視」,考生檢閱合併後 檔案內容無誤後,再輸 入通行碼進行上傳備審 資料「確認」作業。.

1.本次分區競賽試題為公開試題。(試題內容將不做任何百分之三十的調整) 2.參加競賽選手應於競賽開始前 30

1.第52 屆造園景觀職類中區賽,經檢視技檢中心系統計有9組(18人),所需建置競賽場地為 9組,每組工作區為面寬300cm、縱深300cm、填土高度40公分,造園景觀競賽區內,土方

本案採用「評選面向」而非「評選指標」,用意是要讓提案學

(B)使用 Windows XP 內建的 Windows Media Player 來播放影片檔案時,請問下列

分區技能競賽 資訊與網路技術. 正式賽

(七) 重賽:若比賽進行中場地不符規定或有障礙物影響選手之權益,選手可提出重賽。是 否成立以審判委員會評估決定。. (八)