

#include <iostream>
#include <string>

using namespace std;

char ZapisCifre( int c )
{
	char* cifre = "0123456789ABCDEF";
	return cifre[c];
}


// Broj 1123123 prevodimo tako sto ga delimo u 
// grupe od po dva elementa, pocevsi sa desne strane
// dakle 23, 31, 12 i 1
// svakoj grupi dodeljujemo odgovarajucu cifru u osnovi 
// 16 i dobijamo broj 16DB.
// 23 = 3 + 2*4 = 11 = B
// 31 = 1 + 3*4 = 13 = D
// 12 = 2 + 1*4 = 6 = 6
//  1 = 1
// Treba voditi racuna da li imamo paran ili neparan broj cifara
string Konverzija4u16(const string& s) 
{

    unsigned grupa = 0;   
    string rezultat;     

    for(unsigned i=s.length(); i>1; i-=2) 
	{
       grupa = (s[i-1] - '0') + (s[i-2] - '0')*4;
       rezultat = ZapisCifre(grupa) + rezultat;
    }

    if(s.length() % 2) 
	{
		grupa = s[0] - '0';
		rezultat = ZapisCifre(grupa) + rezultat;
    }

    return rezultat;
}

int main() 
{
	string s;
	cout << "Unesi broj u osnovi 4:" << endl;
	cin >> s;
	cout << "Broj u osnovi 16 je: "<< Konverzija4u16(s) << endl;;
	return 0;
}
