2013年8月24日 星期六

2013/08/24 ACM-ICPC Live Archive 5355 - Baudot Data Communication Code

/* https://icpcarchive.ecs.baylor.edu/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=3356 */
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
char up[32], down[32];
char code[80];
int main()
{
    gets(down);
    gets(up);

    while( gets(code) )
    {
        int flag = 0;
        int s = 0;
        int lth = strlen(code);

        while( s+5 <= lth )
        {
            int num =  (code[s]-'0')*16 + (code[s+1]-'0')*8 + (code[s+2]-'0')*4 + (code[s+3]-'0')*2 + (code[s+4]-'0')*1;

            if( num == 31 ) flag = 1;
            else if( num == 27 ) flag = 0;
            else
            {
                if( flag == 1 ) printf("%c", up[num]);
                else  printf("%c", down[num]);
            }
            s += 5;
        }
        printf("\n");
    }

}

沒有留言:

張貼留言