#B3757. [信息与未来 2021] 摩尔斯电码
[信息与未来 2021] 摩尔斯电码
题目背景
早期的电报机只能表达两种状态:电路导通和电路断开。电路导通时喇叭可以发声;断开时则不发声。如何⽤这样的机器来传递⼈类能理解的信号呢?聪明的你⼀定想到了——时间的长短可以表达不同的含义(例如长代表 、短代表 ),然后再把 的⼆进制序列对应到字符就可以啦。
题目描述
摩尔斯电码就是这样⼀种早期的数字通信协议,它通过喇叭发声长短来表示不同的英文字母:
- 点(半角点号
.
),喇叭响 单位时间,读作“滴”(); - 划(半角减号
-
),喇叭响 单位时间,读作“嗒”(); - 字符/单词间的停顿,字符停顿 单位时间,单词停顿 单位时间。
下图列出了摩尔斯电码和英文字母之间的对应:
例如,大家可以试试把 ... --- ...
对照上面的表格翻译成英⽂(空格代表字符的分割)。没错,这就是著名的 “” 紧急求救信号。现在,你需要写⼀个程序把收到的摩尔斯电码翻译回英文字符。
输入格式
输⼊数据的第一行是⼀个整数 ,代表共有 个需要解码的英文字母。
输⼊数据的第二行包含 个摩尔斯电码点/划组成的字符串(字符串之间用一个空格隔开),每个字符串仅包含若干半角减号 -
和半角点号 .
,且保证能翻译为 个英文字母中的⼀个。
输出格式
输出一行,为摩尔斯电码解码后得到的字符串。
3
... --- ...
SOS
35
- .... . --.- ..- .. -.-. -.- -... .-. --- .-- -. ..-. --- -..- .--- ..- -- .--. ... --- ...- . .-. - .... . .-.. .- --.. -.-- -.. --- --.
THEQUICKBROWNFOXJUMPSOVERTHELAZYDOG
提示
解释:The quick brown fox jumps over the lazy dog
是⼀个经典的包含了所有 个字母的句子。此外请注意因为文本宽度限制,样例第二行中的摩尔斯电码产生了断行。在实际的输入数据中,所有的摩尔斯电码均在同一行。
@YXJS:划掉部分为原题面所加,在迁移至洛谷时已修复样例。
对于 的数据,。
本题原始满分为 。