UVa213

来源:互联网 发布:算法导论pdf百度云 编辑:程序博客网 时间:2024/05/20 07:51
/*本题学习的主要是对标准输入输出的处理
在在处理字符的时候可以一个一个的处理,即读取字符的时候一个一个处理,输出字符的时候也可以处理一个输出一个
在处理和标准输入输出时,需要注意的是'\n','\r'和EOF三个字符的处理,尤其是使用getchar()的时候。
另外的一个技巧是在while循环的时候,循环代码有一句必然执行,然后根据执行的结果判断是否继续执行剩下的循环代码
这时候可以在while判断中执行该语句,并且获得语句结果,然后在while判断语句中执行完判断,这样就不会有很多代码冗余
*/
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<vector>
#include<utility>
#include<unordered_set>
#include<unordered_map>
#include<string.h>
using namespace std;
#define nmax 10000
char mp[8][1<<8];
char readchar(){
    int ch;
    do{ch=getchar();}while(ch=='\n'||ch=='\r');
    return ch;
}
int readint(int c){
    int ans=0;
    while(c--)ans=ans*2+readchar()-'0';
    return ans;
}
int readcode(){
    memset(mp,0,sizeof(mp));
    mp[1][0]=readchar();
    for(int len=2;len<8;++len){
        for(int i=0;i<(1<<len)-1;++i){
            int ch=getchar();
            if(ch==EOF)return 0;
            else if(ch=='\n'||ch=='\r')return 1;
            else mp[len][i]=ch;
        }
    }
    return 1;
}
int main()
{
    while(readcode()){
        int cl,val=0;
        //printf("code is %s\n",);
        while((cl=readint(3))!=0){
            while((val=readint(cl))!=(1<<cl)-1)
                //printf("len is %d.val is %d\n",cl,val);
                putchar(mp[cl][val]);
        }
        putchar('\n');
    }
    return 0;
}
原创粉丝点击