#include <iostream>
#include <stack>
using namespace std;
int main() {
string s("10010001000100001111100010001000");
// cin>>s;
stack < char > data;
stack < char > hexed;
data.push('0');data.push('0');data.push('0');
for(char a:s)data.push(a);
while(data.size() > 3){
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0': // 0000
data.pop();
hexed.push('0');
break;
case '1': // 1000
data.pop();
hexed.push('8');
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0': // 0100
data.pop();
hexed.push('4');
break;
case '1': // 1100
data.pop();
hexed.push('C');
break;
}
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0': // 0010
data.pop();
hexed.push('2');
break;
case '1': // 1010
data.pop();
hexed.push('A');
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0': // 0110
data.pop();
hexed.push('6');
break;
case '1': // 1110
data.pop();
hexed.push('E');
break;
}
break;
}
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0': // 0001
data.pop();
hexed.push('1');
break;
case '1': // 1001
data.pop();
hexed.push('9');
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0': // 0101
data.pop();
hexed.push('5');
break;
case '1': // 1101
data.pop();
hexed.push('D');
break;
}
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0':
data.pop();
switch(data.top()){
case '0': // 0011
data.pop();
hexed.push('3');
break;
case '1': // 1011
data.pop();
hexed.push('B');
break;
}
break;
case '1':
data.pop();
switch(data.top()){
case '0': // 0111
data.pop();
hexed.push('7');
break;
case '1': // 1111
data.pop();
hexed.push('F');
break;
}
break;
}
break;
}
break;
}
}
while(hexed.size()){ cout<<hexed.top();hexed.pop(); }
//PS: Обработку остальных "цифр" не прописал - лень
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RhY2s+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCXN0cmluZyBzKCIxMDAxMDAwMTAwMDEwMDAwMTExMTEwMDAxMDAwMTAwMCIpOwovLwljaW4+PnM7CglzdGFjayA8IGNoYXIgPiBkYXRhOwoJc3RhY2sgPCBjaGFyID4gaGV4ZWQ7CglkYXRhLnB1c2goJzAnKTtkYXRhLnB1c2goJzAnKTtkYXRhLnB1c2goJzAnKTsKCWZvcihjaGFyIGE6cylkYXRhLnB1c2goYSk7Cgl3aGlsZShkYXRhLnNpemUoKSA+IDMpewoJCXN3aXRjaChkYXRhLnRvcCgpKXsKCQkJY2FzZSAnMCc6CgkJCQlkYXRhLnBvcCgpOwoJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCWNhc2UgJzAnOgoJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQljYXNlICcwJzogICAgCgkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQkJCWNhc2UgJzAnOiAvLyAwMDAwCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnMCcpOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCWNhc2UgJzEnOiAvLyAxMDAwCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnOCcpOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAnMSc6CgkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQkJCWNhc2UgJzAnOiAvLyAwMTAwCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnNCcpOwoJCQkJCQkJCQkJYnJlYWs7IAoJCQkJCQkJCQljYXNlICcxJzogLy8gMTEwMAoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJ0MnKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQlicmVhazsKCQkJCQljYXNlICcxJzoKCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJY2FzZSAnMCc6ICAgIAoJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJCQljYXNlICcwJzogLy8gMDAxMAoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJzInKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCQljYXNlICcxJzogLy8gMTAxMAoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJ0EnKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCQlicmVhazsKCQkJCQkJCWNhc2UgJzEnOgoJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJCQljYXNlICcwJzogLy8gMDExMAoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJzYnKTsKCQkJCQkJCQkJCWJyZWFrOyAKCQkJCQkJCQkJY2FzZSAnMSc6IC8vIDExMTAKCQkJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJCQloZXhlZC5wdXNoKCdFJyk7CgkJCQkJCQkJCQlicmVhazsKCQkJCQkJCQl9CgkJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQkJYnJlYWs7CgkJCQl9CgkJCQlicmVhazsKCQkJY2FzZSAnMSc6CgkJCQlkYXRhLnBvcCgpOwoJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCWNhc2UgJzAnOgoJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQljYXNlICcwJzogICAgCgkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQkJCWNhc2UgJzAnOiAvLyAwMDAxCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnMScpOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJCWNhc2UgJzEnOiAvLyAxMDAxCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnOScpOwoJCQkJCQkJCQkJYnJlYWs7CgkJCQkJCQkJfQoJCQkJCQkJCWJyZWFrOwoJCQkJCQkJY2FzZSAnMSc6CgkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQlzd2l0Y2goZGF0YS50b3AoKSl7CgkJCQkJCQkJCWNhc2UgJzAnOiAvLyAwMTAxCgkJCQkJCQkJCQlkYXRhLnBvcCgpOwoJCQkJCQkJCQkJaGV4ZWQucHVzaCgnNScpOwoJCQkJCQkJCQkJYnJlYWs7IAoJCQkJCQkJCQljYXNlICcxJzogLy8gMTEwMQoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJ0QnKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCQlicmVhazsKCQkJCQkJfQoJCQkJCQlicmVhazsKCQkJCQljYXNlICcxJzoKCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJY2FzZSAnMCc6ICAgIAoJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJCQljYXNlICcwJzogLy8gMDAxMQoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJzMnKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCQljYXNlICcxJzogLy8gMTAxMQoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJ0InKTsKCQkJCQkJCQkJCWJyZWFrOwoJCQkJCQkJCX0KCQkJCQkJCQlicmVhazsKCQkJCQkJCWNhc2UgJzEnOgoJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJc3dpdGNoKGRhdGEudG9wKCkpewoJCQkJCQkJCQljYXNlICcwJzogLy8gMDExMQoJCQkJCQkJCQkJZGF0YS5wb3AoKTsKCQkJCQkJCQkJCWhleGVkLnB1c2goJzcnKTsKCQkJCQkJCQkJCWJyZWFrOyAKCQkJCQkJCQkJY2FzZSAnMSc6IC8vIDExMTEKCQkJCQkJCQkJCWRhdGEucG9wKCk7CgkJCQkJCQkJCQloZXhlZC5wdXNoKCdGJyk7CgkJCQkJCQkJCQlicmVhazsKCQkJCQkJCQl9CgkJCQkJCQkJYnJlYWs7CgkJCQkJCX0KCQkJCQkJYnJlYWs7CgkJCQl9CgkJCQlicmVhazsKCQl9Cgl9Cgl3aGlsZShoZXhlZC5zaXplKCkpeyBjb3V0PDxoZXhlZC50b3AoKTtoZXhlZC5wb3AoKTsgfQoKLy9QUzog0J7QsdGA0LDQsdC+0YLQutGDINC+0YHRgtCw0LvRjNC90YvRhSAi0YbQuNGE0YAiINC90LUg0L/RgNC+0L/QuNGB0LDQuyAtINC70LXQvdGMCglyZXR1cm4gMDsKfQ==