Aizu Online Judge(AOJ)の過去問から、その提出コードの解答例です。
・問題 "Doctor's Memorable Codes"
https://onlinejudge.u-aizu.ac.jp/problems/0111
・博士の暗号
僕が作成、提出したコードは、以下のとおりです。
・Aizu Online Judge in C++ #Volume1 - 0111 : Doctor's Memorable Codes
/* Aizu Online Judge in C++ #Volume1 - 0111 : Doctor's Memorable Codes https://onlinejudge.u-aizu.ac.jp/problems/0111 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ for(string s;getline(cin,s);){ string st; for(ll i=0;i<s.size();i++){ string str="ABCDEFGHIJKLMNOPQRSTUVWXYZ .,-'?"; ll num=str.find(s[i]); for(ll j=4;j>=0;j--){ st+=!!(num&1<<j)+'0'; } } string t; for(ll i=0;i<st.size();i++){ t+=st[i]; string v[]={"101","000000","000011","10010001","010001","000001","100101","10011010","0101","0001","110","01001","10011011","010000","0111","10011000","0110","00100","10011001","10011110","00101","111","10011111","1000","00110","00111","10011100","10011101","000010","10010010","10010011","10010000"}; const char *c=" ',-.?ABCDEFGHIJKLMNOPQRSTUVWXYZ"; ll num=find(v,v+32,t)-v; if(num!=32){ cout<<c[num]; t.clear(); } } cout<<endl; } return 0; }
設問の出典は、プログラミング問題のオンライン採点システム「Aizu Online Judge(AOJ)」です。
http://judge.u-aizu.ac.jp/onlinejudge/