#include <cmath>
#include <string>
#include <iostream>
long int convert_base10( const std:: string & num, int base)
{
int dig;
long int result = 0 ;
const int len = num.size ( ) ;
for ( int i = 0 ; i < len; i++ )
{
if ( ( num[ len- i- 1 ] >= 'A' ) && ( num[ len- i- 1 ] <= 'F' ) )
{
dig = num[ len- i- 1 ] - 55 ; // Why the magic number?
}
else
{
dig = num[ len- i- 1 ] - 48 ;
}
result + = dig * pow ( base, i) ;
}
return result;
}
void convert_basei( long int num, int base, std:: string & result)
{
char rem;
result = "" ;
while ( num)
{
if ( ( num % base) >= 10 )
{
rem = ( num % base) + 55 ;
}
else
{
rem = ( num % base) + 48 ;
}
result.insert ( 0 , 1 , rem) ;
num / = base;
}
}
int main( )
{
std:: string result, num;
int base1, base2;
while ( std:: cin >> num >> base1 >> base2)
{
long int temp = convert_base10( num, base1) ;
convert_basei( temp, base2, result) ;
std:: cout << "The result is [" << result<< "]." << std:: endl ;
}
std:: cout << "Failed to parse input." << std:: endl ;
}
I2luY2x1ZGUgPGNtYXRoPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgpsb25nIGludCBjb252ZXJ0X2Jhc2UxMChjb25zdCBzdGQ6OnN0cmluZyYgbnVtLCBpbnQgYmFzZSkKewogICAgaW50IGRpZzsKICAgIGxvbmcgaW50IHJlc3VsdCA9IDA7CiAgICBjb25zdCBpbnQgbGVuID0gbnVtLnNpemUoKTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuOyBpKyspCiAgICB7CiAgICAgICAgaWYgKChudW1bbGVuLWktMV0gPj0gJ0EnKSAmJiAobnVtW2xlbi1pLTFdIDw9ICdGJykpCiAgICAgICAgewogICAgICAgICAgICBkaWcgPSBudW1bbGVuLWktMV0gLSA1NTsgLy8gV2h5IHRoZSBtYWdpYyBudW1iZXI/CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGRpZyA9IG51bVtsZW4taS0xXSAtIDQ4OwogICAgICAgIH0KICAgICAgICByZXN1bHQgKz0gZGlnICogcG93KGJhc2UsIGkpOwogICAgfQogICAgcmV0dXJuIHJlc3VsdDsKfQoKdm9pZCBjb252ZXJ0X2Jhc2VpKGxvbmcgaW50IG51bSwgaW50IGJhc2UsIHN0ZDo6c3RyaW5nJiByZXN1bHQpCnsKICAgIGNoYXIgcmVtOwogICAgcmVzdWx0ID0gIiI7CiAgICB3aGlsZSAobnVtKQogICAgewogICAgICAgIGlmICgobnVtICUgYmFzZSkgPj0gMTApCiAgICAgICAgewogICAgICAgICAgICByZW0gPSAobnVtICUgYmFzZSkgKyA1NTsKICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgcmVtID0gKG51bSAlIGJhc2UpICsgNDg7CiAgICAgICAgfQogICAgICAgIHJlc3VsdC5pbnNlcnQoMCwgMSwgcmVtKTsKICAgICAgICBudW0gLz0gYmFzZTsKICAgIH0KfQoKaW50IG1haW4oKQp7CiAgICBzdGQ6OnN0cmluZyByZXN1bHQsIG51bTsKICAgIGludCBiYXNlMSwgYmFzZTI7CiAgICB3aGlsZSAoc3RkOjpjaW4gPj4gbnVtID4+IGJhc2UxID4+IGJhc2UyKQogICAgewogICAgICAgIGxvbmcgaW50IHRlbXAgPSBjb252ZXJ0X2Jhc2UxMChudW0sIGJhc2UxKTsKICAgICAgICBjb252ZXJ0X2Jhc2VpKHRlbXAsIGJhc2UyLCByZXN1bHQpOwogICAgICAgIHN0ZDo6Y291dCA8PCAiVGhlIHJlc3VsdCBpcyBbIiA8PCByZXN1bHQ8PCAiXS4iIDw8IHN0ZDo6ZW5kbDsKICAgIH0KICAgIHN0ZDo6Y291dCA8PCAiRmFpbGVkIHRvIHBhcnNlIGlucHV0LiIgPDwgc3RkOjplbmRsOwp9Cg==