a050: G. 光通訊
標籤 : 2015國中組決賽
通過比率 : 2人/2人 ( 100% ) [非即時]
評分方式:
Strictly

最近更新 : 2023-08-07 12:53

內容

2015 網際網路程式設計全國⼤賽 國中組決賽

喵喵跟貓貓的紙條最近被⽼師截獲,雖然⽼師⼀直看不出裡頭的訊息,但是喵喵跟貓貓還是被罵了⼀頓。他們也意識到使⽤實體媒介會留下通訊的證據,於是他們開始把腦筋動到了其他地

······

有⼀天,貓貓正在吃著某間連鎖店的漢堡,⽽喵喵若有所思地盯著那個漢堡看著。

「你知道摩斯電碼嗎?」喵喵突然⼩聲的問貓貓。

『那是什麼?能吃嗎?』貓貓⼀邊說著⼀邊把⼿上剩下⼀半的漢堡⼀⼝塞進了嘴裡。

「你噢 ······ 就只知道吃。」喵喵無奈地拍了額頭,開始解釋道:「摩斯電碼(morse code)是電報剛發明的時候,⽤來傳訊息的⼀種編碼⽅式。感覺可以⽤來取代我們原本的紙條。」

『電報?所以我們要在我們的位⼦中間拉⼀條⻑⻑的電線,然後⼀個⼈⾷指貼著⼀個⾦屬⽚打字,另⼀個⼈戴著⽿機聽?這樣太明顯了吧。』

「凡⼈的智慧。這是最傳統的⽅式。」喵喵嘆道:「光也是可以利⽤的。」

『光?』貓貓⽔汪汪的眼睛充滿了困惑。『你是說像電視劇那樣拿著⼀個⼿電筒往對⽅打,然後

⼀亮⼀滅的嗎?這樣⽼師不會發現嗎?』

「你鄭吒啊?當然不是這樣。」喵喵⽩了他⼀眼,伸出了⾷指⼀上⼀下地敲著桌⼦:「我們的座位是可以看得到對⽅的,所以可以⽤動作來傳訊。」

『可是這樣不會有聲⾳嗎?』

「當然只要做做樣⼦讓對⽅看得到就好啊 ······ 崩 \(〒⽫〒)/ 潰」經過喵喵努⼒地解釋了好⼀陣⼦後,貓貓終於⼤致理解了整個傳訊系統要怎麼運作。

摩斯電碼是由⼀些⻑訊號跟⼀些短訊號組合⽽成的。為了⽅便起⾒,我們稱短訊號為「點

(.)」,⻑訊號則是「劃(-)」,⽽英⽂單詞中間會以⼀個空⽩分隔,但空⽩在摩斯電碼⼀般表⽰字符跟字符之間的分隔,我們先⽤斜線 ‘/’ 來表⽰。

例如,“NPSC GG” 的摩斯電碼是 “-. .--. ... -.-. / --. --.”。“-.” 是 ‘N’,⽽ “.--

.” 是 ‘P’,詳細的對照請參閱⽂末的表格。

但是動作無法表⽰⻑與短訊號,所以需要進⼀步的設計怎麼表⽰⻑訊號、短訊號以及停頓。

⼀個⽅法是,可以把連續的時間切成⼀個⼀個單位。例如,以秒為單位。接著看著傳訊者的⼿指,看著每⼀秒鐘,傳訊者的⼿指是否打算敲擊桌⼦。假設有敲擊的秒標為 ‘=’,沒有敲擊的秒標為 ‘.’,這樣可以把⼀段時間內,傳訊者的動作表達成⼀個序列,⽽⻑訊號跟短訊號也可以⽤此來表⽰。

「點」是連續敲擊⼀秒時間(也就是敲⼀下),⽽「劃」是三秒(連續三秒都各敲⼀下)。「點」「劃」之間會停頓⼀秒,⽽每個字之間的間隔是停頓三秒;單詞之間的間隔(也就是空⽩ ‘/’)會停頓七秒。

於是上述的摩斯電碼就會變成這樣:

===.=...=.===.===.=...=.=.=...===.=.===.=.......===.===.=...===.===.=

- . . - - . . . . - . - .                                                                                                       - - . - - .

N                  P                              S                C                       /              G                         G

⽼樣⼦,貓貓跟喵喵覺得解摩斯電碼是個很枯燥繁瑣的⼯作,於是他們打算請你幫忙寫個程式來幫他們解開摩斯電碼。你的程式會被給予每秒鐘對⽅是否敲擊桌⼦的紀錄,請你解出原⽂。噢對了,以下是摩斯電碼表:

字⺟(摩斯電碼裡只有⼤寫)

A .-B -...C -.-.D -..E .F ..-.G --.H ....

I ..J .---K -.-L .-..M --N -.O ---P .--.

Q --.-R .-.S ...T -U ..-V ...-W .--X -..-

Y -.--Z --..

輸入說明

輸⼊只有兩⾏。

第⼀⾏為⼀個整數 n,表⽰輸⼊會有連續 n 秒的資訊。第⼆⾏為⼀個只有 ‘=’ 跟 ‘.’ 組成的字串 S,其⻑度為 n,表⽰每秒鐘是否敲擊桌⼦的紀錄。

  • n ≤ 999
  • 解碼後的原⽂只會有英⽂⼤寫字⺟及空⽩,⽽且不會有連續的空⽩字元。
  • 輸⼊會是從合法的原⽂轉換⽽成,且會嚴格遵守上述的停頓規範,不會有任何多餘的停頓。
  • 第⼀秒⼀定是某個⾮空⽩字元的開頭,最後⼀秒⼀定會是某個⾮空⽩字元的結尾。
輸出說明

請輸出⼀⾏字串,為解碼後的原⽂。

範例輸入
69
===.=...=.===.===.=...=.=.=...===.=.===.=.......===.===.=...===.===.=
範例輸出
NPSC GG
測資資訊:
記憶體限制: 512 MB
公開 測資點#0 (6%): 1.0s , <1K
公開 測資點#1 (6%): 1.0s , <1K
公開 測資點#2 (6%): 1.0s , <1K
公開 測資點#3 (6%): 1.0s , <1K
公開 測資點#4 (6%): 1.0s , <1K
公開 測資點#5 (6%): 1.0s , <1K
公開 測資點#6 (6%): 1.0s , <1K
公開 測資點#7 (6%): 1.0s , <1K
公開 測資點#8 (6%): 1.0s , <1K
公開 測資點#9 (6%): 1.0s , <1K
公開 測資點#10 (6%): 1.0s , <1K
公開 測資點#11 (6%): 1.0s , <1K
公開 測資點#12 (7%): 1.0s , <1K
公開 測資點#13 (7%): 1.0s , <1K
公開 測資點#14 (7%): 1.0s , <1K
公開 測資點#15 (7%): 1.0s , <1K
提示 :

其他範例輸入及輸出,可參造原題目說明

標籤:
2015國中組決賽
出處:
NPSC [管理者:
zero (管理員)
]


編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」