#include #include #include using namespace std; typedef int var; //ifstream cin("debug.in"); //ofstream cout("debug.out"); char S1[1000], S2[1000]; var i1, i2; var size; char rez[1000][1000]; char MAP[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F'}; void parse_u() { var nr = 0; while(isdigit(S2[i2])) { nr = nr*10 + S2[i2] - '0'; i2++; } size++; for(var t=0; t<4; t++) { var rest = nr % 256; char a = MAP[rest/16], b = MAP[rest%16]; rez[size][2*t] = a; rez[size][2*t+1] = b; nr /= 256; } } void parse_x() { i2 += 2; size++; char str[8]; var sz = 0; while(S2[i2] != ' ') { str[sz++] = S2[i2++]; } str[sz] = 0; for(var i=sz-1; i>=0; i--) { str[i+8-sz] = str[i]; } for(var i=0; i<8-sz; i++) { str[i] = '0'; } for(var t=0; t<4; t++) { rez[size][2*(3-t)] = str[2*t]; rez[size][2*(3-t)+1] = str[2*t+1]; } } void parse_c() { char c = S2[i2]; size++; rez[size][0] = MAP[c/16]; rez[size][1] = MAP[c%16]; } void parse_s() { size++; var t=0; while(S2[i2] != ' ') { char c = S2[i2]; rez[size][2*t] = MAP[c/16]; rez[size][2*t+1] = MAP[c%16]; i2++; t++; } } char buff[256]; int main() { cin.getline(S1, 2000); cin.getline(S2, 2000); strcat(S1, " "); strcat(S2, " "); fill(buff, buff+256, '0'); for(; S2[i2]; i1++, i2++) { if(S1[i1] == '%') { i1++; if(S1[i1] == 'u') { parse_u(); i2--; } else if(S1[i1] == 'x') { parse_x(); i2--; } else if(S1[i1] == 's') { parse_s(); i2--; } else { parse_c(); } } } var a = 0; while(S1[i1]) { while(S1[i1] && !isdigit(S1[i1])) i1++; var nr = 0; while(isdigit(S1[i1])) { nr = nr * 10 + S1[i1] - '0'; i1++; } a++; for(var j=0; rez[a][j]; j++) { buff[2*nr+j] = rez[a][j]; } } for(var i=0; i<256; i++) { cout<