题解 | #小沙的hello world!#
需要一点点灵性。把第二个样例直接存到代码里再操作。顺便开了颗字典树。
#include <cstdio>
#include <cstring>
using namespace std;
const int N = 5e6 + 1;
const char cha[70] = "08 3+2&/DK(:)|14.5{,*-=<H$6FE]B@IL?GTQOXUJY\";M}N~WRPZ9#S`!V'^_7%\\[A>C";
const char s[5][346] = {
"#*********#####*****##*##*****#***####*#****#*#*###**#########**###*####*#####*######*****#***######*#*#*############*##*###*#***#***************##*******#*****#***#*#####***#*********************###**###*###*#*###*#*#*######*###*#***#*###*#*###*#*#**********#**********##*#*#****##*####*##*###*##**###*#######*******##***###***####*####*##*****",
"#*##**###*#########*##*##*###*#*#*###**#*###***###**#####*#####**##*###**####**######*#####*#########***######*****#*###*###**#*#**####*####*########**###******##*##*#######*#*######*##*###**###*#*#*#*###*###*##*#*#*#*####*##**#**###*#**##**#*#**#*#**###**###*###*#*###*******#######*###*##*###*###*##*#*##########***#*##**##*#####*#*####*#*####",
"#*##******#####**********###**##*#*##*##*###**####*#############*##*####*###*#*######*******##########*##*****#####*####*****#***#***************####*****#**#**##*##*######**#*#***##*##*#*#**###*##*##*###*###*###*############**#**###***#*#*###*#*#*#*****#****###*##*****#*#*##***########*###*#*####################*##*####**#*#####***#####**####",
"#*##**###*#########*##*####**##*#*##**##*###***###**#####*#####**##*####*##*****#########*#*######*##***######*****#*###*###*##*#**###**####*########**###******##*##*#########*#*#*##*##*##***###*#*#*#*###*#*#*###*#########*##*#*#*###*#*##**#####*#*#**#*##*#####*#######******####*###########*#*####################*#*#**###***####*###*###*#*####",
"#*********#####*****##*##*****#***##*###****#*#*###**#########**###*##*****###*###*##*****#***###**#*#*#*############*##*###*#***#******####*****##*******#*****#***#*****##*##*****##*##***********###******#***###*#########*##*#*#*#***#*###*######*#*#*##*#*####***********#*###***########*####*############*****####**##**####***###*###*##*##*****"
};
int tr[N][2], id;
char input[5][N];
int main(){
for(int i = 0; i < 69; i++){
int p = 0;
for(int j = 0; j < 5; j++)
for(int k = 0; k < 5; k++){
p = tr[p][s[j][i * 5 + k] == '*'] ? tr[p][s[j][i * 5 + k] == '*'] : tr[p][s[j][i * 5 + k] == '*'] = ++id;
}
tr[p][0] = cha[i];
}
for(int i = 0; i < 5; i++)
scanf("%s", input[i]);
int n = strlen(input[0]) / 5;
for(int i = 0; i < n; i++){
int p = 0;
for(int j = 0; j < 5; j++)
for(int k = 0; k < 5; k++)
p = tr[p][input[j][i * 5 + k] == '*'];
putchar(tr[p][0]);
}
return 0;
}