/*信息解码P83*/
#include<stdio.h>
#include<string.h>
int code[8][1<<8];
#include<string.h>
int code[8][1<<8];
int readchar(){
for(;;){
int ch = getchar();
if(ch != '\n' && ch != '\r'){
return ch;
}
}
}//跨行读取字符
for(;;){
int ch = getchar();
if(ch != '\n' && ch != '\r'){
return ch;
}
}
}//跨行读取字符
int readint(int c){
int v = 0;
while(c--){
v = v * 2+ readchar() - '0';
}
}//读取编码,获取字符串的长度
int readcodes(){
//编码头独占一行,所以应该用readchar()读取第一个字符,而用普通的getchar()读取剩下的字符
memset(code, 0, sizeof(code));
code[1][0] = readchar();
for(int len =2;len <=7;len++){
for(int i = 0; i < (1<<len)-1 ;i++){
int ch = getchar();
if(ch == EOF)
return 0;
if(ch == '\n' || ch == '\r')
return 1;
code[len][i] = ch;
}
}
return 1;
}//读取二进制字符串,并且转化为十进制整数
void printcodes(){
for(int len =1; len <= 7; len++){
if(code[len][i] == 0)
return;
printf("code[%d][%d]"=%c\n",len,i,code[len][i]);
}
}
for(int len =1; len <= 7; len++){
if(code[len][i] == 0)
return;
printf("code[%d][%d]"=%c\n",len,i,code[len][i]);
}
}
int main(){
while(readcodes()){//无法读取更多编码头时退出
printcodes();
for(;;){
int len = readint(3);
if(len == 0)
break;
for(;;){
int v = readint(len);
putchar(code[len][v]);//读取后将字符串存入数组
}
}
putchar('\n');
}
return 0;
}