#29747. 【模拟】消息解密
【模拟】消息解密
题目描述:
加密技术是最常用的安全保密手段,利用技术手段把重要的数据变为[乱码]传送,到达目的地后再用相同或不同的手段还原(解密)。
现在有一加密好的信息需要解密,这段信息包括一个文本串s和一个数字串p。其中文本串记录了所有可用的字符集。数字串为一段二进制编码,仅由0和1两种数字组成。
数字串中包含多个部分,每个部分以一个标准3位二进制数开始,表示这个部分的信息长度l,之后接着是若干个长度为l的[信息内容],每部分信息内容以连续l个1作为结束,数字串最终以000结束。例如数字串[00101011100110111000]表示第一部分信息长度为[001]对应的二进制数1,信息内容只有一个0,以1作为这部分信息的结束符。第二部分信息长度为[011]对应的二进制数3,信息内容为[100110],以111作为这部分信息的结束符。最后000表示数字串结束。
其中[信息内容]并不是标准的二进制数,观察数列0, 00, 01, 10, 000, 001, 010, 011, 100, 101, 110, 0000, 0001, . . . , 1011, 1110, 00000, . . . 数字位于数列第几个,那么这个数字就代表了几,例如00排在第二个,所以00代表2,注意,数列中并没有每位都是1的情况。
按上述规则,数字串可以转换为一段新的数字,例如[00101011100110111000]可以转换为[1,9,11],其对应了文本串中的相应字符,当文本串为"TheLastOfUs"时,对应了第1,9,11个字符。
给定文本串和数字串,请解密
输入格式:
两行,第一行为文本串s,仅包含小写字母,第二行为数字串p,仅包含0和1
0<|s|、|p|<=1000
输出格式:
一行,解密后的字符串
样例:
TheLastOfUs
00101011100110111000
Tfs