#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
using namespace std;
char length[3];
void readchar(char *a,int n)//从输入的01字符流中读取指定个数字符
{
int i=n-1;
char c;
while(c=getchar()){
if(c=='\n'||c=='\r')
continue;
else
a[i--]=c;
if(i<0)
break;
}
}
int trans(char *a,int n)//二进制转十进制
{
int sum=0,i;
for(i=0;i<n;i++)
sum+=(a[i]-'0')*(1<<i);
return sum;
}
int main()
{
//freopen("input.txt","r",stdin);
string header;
int len,d,t;
while(getline(cin,header)){ //读取header
while(1){ //读取接下来一段的length of keys
memset(length,0,sizeof(length));
readchar(length,3);
len=trans(length,3);
if(!len){ //若length=0,退出
cout<<endl;
getchar();
break;
}
char *code=new char[len];
while(1){
readchar(code,len); //读入length个字符
d=trans(code,len); //转换为十进制
if(d==(1<<len)-1) //若code为全1,退出本段keys
break;
t=(1<<len)-1-len+d; //根据length和d,计算code在header中的偏移量
cout<<header[t];
}
}
}
return 0;
}
UVA - 213 Message Decoding
最新推荐文章于 2020-01-24 12:33:22 发布