硬核打表
#include<bits/stdc++.h>
using namespace std;
string s,h,s2;
string jz(string s){
string t="";
for(int i=0;i<s.size();i++){
if(s[i]=='0'){
t+="000";
}
if(s[i]=='1'){
t+="001";
}
if(s[i]=='2'){
t+="010";
}
if(s[i]=='3'){
t+="011";
}
if(s[i]=='4'){
t+="100";
}
if(s[i]=='5'){
t+="101";
}
if(s[i]=='6'){
t+="110";
}
if(s[i]=='7'){
t+="111";
}
}
return t;
}
string HEX(string s){
string t="";
for(int i=s.size();i>=0;i-=4){
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='0'&&s[i+3]=='0') t+='0';
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='0'&&s[i+3]=='1') t+='1';
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='0') t+='2';
if(s[i]=='0'&&s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='1') t+='3';
if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='0') t+='4';
if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='1') t+='5';
if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='0') t+='6';
if(s[i]=='0'&&s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='1') t+='7';
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='0'&&s[i+3]=='0') t+='8';
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='0'&&s[i+3]=='1') t+='9';
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='0') t+='a';
if(s[i]=='1'&&s[i+1]=='0'&&s[i+2]=='1'&&s[i+3]=='1') t+='b';
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='0') t+='c';
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='0'&&s[i+3]=='1') t+='d';
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='0') t+='e';
if(s[i]=='1'&&s[i+1]=='1'&&s[i+2]=='1'&&s[i+3]=='1') t+='f';
}
while(t[t.size()]=='0'&&t.size()!=1){
t[t.size()]='\0';
}
reverse(t.begin(),t.end());
return t;
}
int main(){
cin>>s;
s2=jz(s);
h=HEX(s2);
cout<<h;
return 0;
}