1
103 學年度建國中學資訊科校隊選拔賽 程式設計試題
Competition Rules
1. 考試時間共 240 分鐘。
2. 共 6 題,每題滿分 100 分,本測驗滿分為 600 分。
3. 本次競賽使用線上評測系統(TIOJ Infor Online Judge)。參賽者需將 程式碼上傳至線上評測系統,才予以計分,成績以評測系統上的分數為準。(若 發現測資有誤等情形,仍有可能在比賽當中結束後重新測試,且以重新測試 後之分數作為最終分數)
4. 請使用C、C++ 作答。
5. 競賽的開始、結束時間以線上評測系統為準。只有在競賽期間上傳的程式碼
才會計分(以上傳程式碼的時間為判斷依據,如果在競賽期間內上傳,但評測 完畢時競賽已結束,仍然會計分)。
6. 若題目內容有修正,將會發佈公告,並以線上評測系統的題目內容為主。
7. 測驗中只允許開啟撰寫程式必需的編輯器、輔助程式,不得開啟無關的應用 程式,也不得連結 TIOJ Infor Online Judge 以外的其他網站,違者 視同作弊,上機測驗以 0 分計算。
8. 測驗期間,選手應隨時備份資料,以防資料流失。
9. 測驗期間,請勿交談或與選手有任何交流,違者視同作弊,上機測驗以零分
計算。
10. 測驗期間,禁止攜帶或使用任何電子設備以及使用無線網路,違者視同作弊,
上機測驗以零分計算。
11. 由於線上評測系統採自動化評分,請參賽者務必嚴格遵守各題的輸入輸出格 式,並且在輸出的末尾需要換行。若格式錯誤,將很有可能被判斷為答案錯 誤,並獲得 0 分。
姓名:__________ 班級:________ 座號:________ 得分:_________
程式設計題
pA 生成樹
Description
你,もも,是個考古學家。
這次你去到了亞特蘭提斯,
走著走著你發現了一個地穴。
地穴被一個大石碑擋住,
上面沾滿了灰塵,
你輕拍了石碑。
「密碼鎖!!?」你驚呼了一聲。
你向來不太會解密碼鎖,
所以你拿出了筆電,
開始計算答案到底是多少,
你發現答案可能太大,
仔細的看了一下石碑上面
「如果你發現你無法將你的答案用密碼鎖表達,請試著 mod 1000000007」。
密碼鎖的下方寫著:
給定 n, k 求滿足下列的組合數 1. 1≤x, f(x)≤n
2. x, f(x)屬於正整數 3. IF f(x) =f(y)x=y
4. f2(x) =f(f1(x)) = f(f(x)); 亦即 fa(x) =f(fa−1(x)) 5. fk(x) =x
6 .f(x)̸=x
舉個例子 n= 4k = 2 時 f(1)=2 f(2)=1 f(3)=4 f(4)=3 是一個滿足的解
對於所有 1≤x≤n 都有滿足 f2(x) =x
Input Format
本題有多筆測資,
請讀到 EOF。
Output Format Sample Input
4 2 9 3
Sample Output
程式設計題
3 2240
Hint
n=4 k=2
f(1)=2 f(2)=1 f(3)=4 f(4)=3 f(1)=3 f(2)=4 f(3)=1 f(4)=2 f(1)=4 f(2)=3 f(3)=2 f(4)=1 共三組解
3
程式設計題
pB 地圖
Description
你,もも,成功解開了密碼。
進到一個很奇妙的空間。
請參考下圖:
http://ppt.cc/v7jr 這是地圖的產生方法。
你發現,質數的格子上面好像有些什麼。
一踩上去,你就覺得興奮。
你想盡可能的多踩幾個質數的格子。
不過你發現,
地圖是分層的,
所以你每次都只能決定你要往下方,左下方以及右下方那個格子走。
你想知道你最多可以踩過幾個格子,以及最後一個踩到的質數有多大。
當你發現有不一樣的路徑可以走過一樣多的質數格子,那麼你會挑路徑上最後一個質 數最大的走。
Input Format
本題有多筆測資 請讀到 EOF
每筆測資給定兩個數字 n, k n 代表地圖的大小
k 代表你一開始在的地方
當然你不能走到≥n 的地方,因為那邊並不存在。
Output Format
對於每筆測資輸出兩個數字 u, v u 表示可以走過的最多質數的個數 v 表示路徑上最後一個質數
Sample Input
46 1
程式設計題
Sample Output
2 43
Hint
地圖大小為 46,出發點為 1時
你可以有下列的走法走到最多的質數格子 1->7->23->45
1->7->23->46 1->7->21->43
前兩種走法都經過兩個,最後一個經過的是 23。
最後一種走法也經過兩個,最後一個經過的是 43。
所以你會挑第二種走。
5
程式設計題
pC 全點對最短路徑
Description
你,もも,從神秘的洞穴走出來了。
到了一個奇妙的一維空間。
一走出來,就一堆人衝出來歡迎你。
當地的居民看到你便覺得你氣質非凡。
所以他們拜託你解決一個問題。
在這個空間裡有一個又一個的城鎮,
從空間最左邊的城鎮走到最右邊的城鎮太花時間了。
當地的居民有著祖先們流傳下來的蟲洞,
理所當然就是從蟲洞的一端到另一端是不需要時間的,
這種強大的東西當然只有一對。
當地居民很渴望知道加了蟲洞之後,最遠的兩個城鎮距離最短是多少。
Input Format
你解決了當地居民的問題往後走之後...
你發現其實這邊是二維的...
代表著有很多空間都有這種問題...
所以有多筆測資
第一行有一個數字 N 代表有幾筆測資 每筆測資會有一行 M 代表有幾個城鎮 接著會有 M 個數字代表城鎮的分布位置
Output Format
對於每筆測資輸出一個數字代表答案。
Sample Input
2 3 -1 1 10 2
1000000000 -1000000000
程式設計題
Sample Output
2 0
Hint
7
程式設計題
pD 你會寫 Tarjan 嗎?
Description
你,もも,解決了很多居民的煩惱之後,
他們推舉你出來選舉,
但是選舉並沒有那麼簡單,
並不是靠著老爸就可以。
而且這邊選制非常的特別,
是有很多基礎選區,中選區,大選區,加大選區,兩倍加大選區... 構成的,
你發現不管在哪個地方,
只要贏得超過一半的支持就贏了,
你也發現,不管在哪,
總是奇數個選區,或者奇數個選民。
你想知道成為這邊的首領至少要拿到幾票。
Input Format
你發現你的野心越來越大,
所以你當上了二維空間的王就想當三維的王,
當了三維的王就想當四維的...
所以你有很多很多的選戰要打。
因此這題也是多筆測資,
第一個數字 N 代表接下來有幾筆測資。
接著測資的形式請參考 Sample Input。
Output Format
對於每筆測資輸出你最少要贏幾票。
Sample Input
[[123][4567][89]]
[[5][3][7][3][9]]
[[[99][59][63][85][51]][[1539][7995][467]][[51][57][79][99][3][91][59]]]
Sample Output
107 7 175
程式設計題
Hint
每個成對 []代表一個選區 代表裡面有三個小選區
你在這三個小選區贏了其中兩個 (也就是超過一半) 就可以稱王了
如果選擇 [123] 跟[89] 那麼會是最佳解。
贏得 [123] 需要贏62 票,[89] 需要45 票,
所以最少票數是107 票。
9
程式設計題
pE 簡單圖判定
Description
有一天喵喵找貓貓買了 1kg 的魚,可是喵喵回家以後把魚放上磅秤,發現貓貓給她的 魚竟然少了 24g。
於是喵貓給了貓喵一張無向圖,請貓喵判斷它是不是一張簡單圖。
Input Format
第 一 行 有 兩 個 正 整 數 m、n(m ≤ 103,n ≤ 109), 分 別 代 表 點 與 邊 的 數 量, 其 中 每 個 點 都 由 一 個 正 整 數 代 表。 接 下 來 有 n 行, 其 中 每 行 有 兩 個 正 整 數 vi、wi
(1≤vi, wi ≤n),代表有一條連接點 vi 與點 wi 的邊。
Output Format
如果這是一張簡單圖,請輸出 yes,否則請輸出 Yes。
Sample Input
3 3 1 2 1 3 2 3
Sample Output
yes
Hint
存在先於本質
程式設計題
pF DP1
Description
嘎嘎最喜歡研究一些怪問題考別人,有一天窮極無聊出了一道題目問周遭的友人:
1976106 的最後兩位數是什麼?
所有人看了都目瞪口呆,因為根據乘冪的運算法則,1976106從上頭算起,就是19761000000, 亦即 1976 自乘一百萬次方,這哪能算?
別嚇到了,其實很簡單的,因為 76 是一個非常特殊的 2 位數,任何兩個以 76 為 尾巴的數相乘,其末二位數仍然是 76,好像是個變不掉的「尾巴」,正因為如此,76 被人們稱之為「自守數」。根據這個重要性質,算都不用算,馬上就可判斷 1976106 的 最後兩位數還是76。除此之外,兩位數的自守數還有 25。
而一位數的自守數則是 1、5 和6。
別懷疑,自守數還可以任意拉長到 n 位,所以現在請輸入任意一個正整數 n,請 找出 n 位數的所有自守數。
Input Format
一個正整數 n(1≤n≤100)。
Output Format
從小到大依序輸出 n 位數的所有自守數。
Sample Input
1
Sample Output
1 5 6
Hint
11