度娘翻译
查看原帖
度娘翻译
468944
Iamhero楼主2021/11/27 09:21

题目描述

Byteotian电信研究所(BIT)为整个Byteotia的电信网络中的数据传输制定了标准。 Byteasar是BIT雇佣的工程师之一,他致力于前缀代码——一种表示字符的特定方式。 对于字节字母表中的每个字符,都有一个相应的位序列,称为该字符的码字。 所有字符的码字都具有以下属性: 没有一个码字是另一个码字的前缀(即前导片段)。 例如,如果010010是字母A的码字,那么位序列0、01、010、0100或01001都不是另一个字母的码字。 同样,0100100、0100101和以010010开头的更长序列也不是码字。 如果给定的位序列是另一个码字的前缀,但不是完整的代码,则每个位序列和(即,在末尾附加零或一)是某个码字或完整码字的前缀。 例如,如果0100是字母A的码字前缀,那么01000和01001分别是某个码字或完整码字的前缀。 让我们考虑字母A、B、C、D和E组成的字母表的以下示例前缀码: 字符码字A00 B10 C11 D010 E011使用前缀码对字符序列进行编码,包括串联其连续字符的码字。 例如,序列BACAEBABAE的编码为100001100011100100100011。 Byteasar注意到,如果一些前导位丢失,序列可能会解码错误,甚至可能根本没有解码。 例如,如果移除上述序列的五个初始位,则所得序列100011100010000011将被解码为BACBABAE。 最后五个字母(BABAE)正确,但前三个字母(BAC)不正确。 Byteasar进一步注意到,第一个E之后的所有字母都被正确解码。 他得出结论,只要E的所有码字位都完好无损,E后面的所有字符都将被正确解码。 对于从一个包含E的编码序列中获得的每个编码序列也是如此。 他还注意到字母D具有这一特征,但A、B和C没有。 由于E和D的码字的性质,Byteasar称它们为同步码字。 他把编写一个程序的任务委托给你,该程序将查找给定前缀代码的所有同步码字。 为了节省一些时间,他打算在他的二进制监视器上向您展示所有的码字。 这个有趣的设备有四个按钮: 0-追加![](http://main.edu.pl/im…

输入格式

在标准输入的第一行,有一个整数()表示Byteasar按下的按钮数。 在下一行中,给出了由字符“0”、“1”、“B”和“X”组成的字母长字符串;当然,这些字符对应于按钮。 每次按下按钮X时,一个码字完成,另一个码字启动。 代码字从1开始编号。 所有码字的长度总和不得超过。

输出格式

同步码字的数量应打印在标准输出的第一行。 以下几行应包含按递增顺序同步的码字数,每一行单独一行。 如果给定的前缀代码不包含同步码字,则第一行应包含数字0,后面不应再出现任何行。

2021/11/27 09:21
加载中...