#include <iostream>
using namespace std;
void toBinary(int n,char* str,int d){
if(d<0)return;
str[d]=n%2+'0';
toBinary(n>>1,str,d-1);
}
int toDecimal(char* str,int d){
if(d<=1)return str[0]-'0';
return ((str[0]-'0')<<(d-1))+toDecimal(str+1,d-1);
}
char* encrypt(char* str){
int i,j;
int len = (strlen(str))*8;
char* str2=new char[len+1];
for(i=0;i<(strlen(str))*8;i++){
str2[i]='0';
}
for(i=0;i<strlen(str);i++){
int n = (int)str[i];
toBinary(n,str2+i*8,8);
}
//edit
str2[len]='\0';
char tstr[5];
memcpy(tstr,str2,4);
//edit
tstr[4]='\0';
strcpy(str2,str2+4);
strcpy(str2+len-4,tstr);
char* encryptedStr=new char[len/4+1];
char map[]="0123456789ABCDEF";
for(i=0;i<len/4;i++){
encryptedStr[i]=map[toDecimal(str2+4*i,4)];
}
encryptedStr[i]='\0';
return encryptedStr;
}
int main(void){
char str[256];
gets(str);
char* encrypterStr = encrypt(str);
cout<<encrypterStr;
}
#include <iostream>
using namespace std;
void toBinary(int n,char* str,int d){
if(d<0)return;
str[d-1]=n%2+'0';
toBinary(n>>1,str,d-1);
}
int toDecimal(char* str,int d){
if(d<=1)return str[0]-'0';
return ((str[0]-'0')<<(d-1))+toDecimal(str+1,d-1);
}
char* encrypt(char* str){
int i,j;
int len = (strlen(str))*8;
char* str2=new char[len+1];
for(i=0;i<(strlen(str))*8;i++){
str2[i]='0';
}
for(i=0;i<strlen(str);i++){
int n = (int)str[i];
toBinary(n,str2+i*8,8);
}
str2[len]='\0';
char tstr[5];
memcpy(tstr,str2,4);
tstr[4]='\0';
strcpy(str2,str2+4);
strcpy(str2+len-4,tstr);
char* encryptedStr=new char[len/4+1];
char map[]="0123456789ABCDEF";
for(i=0;i<len/4;i++){
encryptedStr[i]=map[toDecimal(str2+4*i,4)];
}
encryptedStr[i]='\0';
return encryptedStr;
}
int main(void){
char str[256];
gets(str);
char* encrypterStr = encrypt(str);
cout<<encrypterStr;
}
void toBinary(int n, char* str, int d) {
if (d == 0)
return;
str[d - 1] = n % 2 + '0';
toBinary(n >> 1, str, d - 1);
}