AOJ 0088 - The Code A Doctor Loved
入力面倒なだけの問題.
#include<iostream> #include<map> #include<sstream> std::string to_bs(int i){ std::string s = ""; while(i > 0){ s = static_cast<char>(i%2+'0') + s; i /= 2; } while(s.length() < 5){ s = '0' + s; } return s; } int main(){ std::map<char, std::string> input; std::map<std::string, char> output; input[' '] = "101"; input['\''] = "000000"; input[','] = "000011"; input['-'] = "10010001"; input['.'] = "010001"; input['?'] = "000001"; input['A'] = "100101"; input['B'] = "10011010"; input['C'] = "0101"; input['D'] = "0001"; input['E'] = "110"; input['F'] = "01001"; input['G'] = "10011011"; input['H'] = "010000"; input['I'] = "0111"; input['J'] = "10011000"; input['K'] = "0110"; input['L'] = "00100"; input['M'] = "10011001"; input['N'] = "10011110"; input['O'] = "00101"; input['P'] = "111"; input['Q'] = "10011111"; input['R'] = "1000"; input['S'] = "00110"; input['T'] = "00111"; input['U'] = "10011100"; input['V'] = "10011101"; input['W'] = "000010"; input['X'] = "10010010"; input['Y'] = "10010011"; input['Z'] = "10010000"; for(int i=0;i<26;i++){ output[to_bs(i)] = 'A' + i; } output["11010"] = ' '; output["11011"] = '.'; output["11100"] = ','; output["11101"] = '-'; output["11110"] = '\''; output["11111"] = '?'; std::string s; while(std::getline(std::cin, s), !std::cin.eof()){ std::string bs = ""; for(int i=0;i<s.length();i++){ bs += input[s[i]]; } while(bs.length()%5){ bs += '0'; } std::string res = ""; while(bs.length()){ std::string _s = bs.substr(0, 5); res += output[_s]; bs = bs.substr(5); } std::cout << res << std::endl; std::cin.clear(); } }