#include <iostream>
#include <string>
std::string radix (int value, unsigned r) {
std::string buffer;
std::string sign;
if (value < 0) {
sign = "-";
value = -value;
}
do {
int digit = value % r;
buffer += digit<10 ? '0'+digit : 'A'+(digit-10);
value /= r;
} while (value !=0);
buffer += sign;
return std::string(buffer.rbegin(), buffer.rend());
}
int main()
{
std::cout << radix(5,2) << std::endl
<< radix(5,10) << std::endl
<< radix(-5,10) << std::endl
<< radix(15,2) << std::endl
<< radix(15,7) << std::endl
<< radix(15,8) << std::endl
<< radix(15,10) << std::endl
<< radix(15,14) << std::endl
<< radix(15,15) << std::endl
<< radix(15,16);
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgoKc3RkOjpzdHJpbmcgcmFkaXggKGludCB2YWx1ZSwgdW5zaWduZWQgcikgewogIHN0ZDo6c3RyaW5nIGJ1ZmZlcjsKICBzdGQ6OnN0cmluZyBzaWduOwogIGlmICh2YWx1ZSA8IDApIHsKICAgICBzaWduID0gIi0iOwogICAgIHZhbHVlID0gLXZhbHVlOwogIH0KICBkbyB7CiAgICBpbnQgZGlnaXQgPSB2YWx1ZSAlIHI7CiAgICBidWZmZXIgKz0gZGlnaXQ8MTAgPyAnMCcrZGlnaXQgOiAnQScrKGRpZ2l0LTEwKTsKICAgIHZhbHVlIC89IHI7CiAgfSB3aGlsZSAodmFsdWUgIT0wKTsKCiAgYnVmZmVyICs9IHNpZ247CiAgcmV0dXJuIHN0ZDo6c3RyaW5nKGJ1ZmZlci5yYmVnaW4oKSwgYnVmZmVyLnJlbmQoKSk7Cn0KCmludCBtYWluKCkKewogICAgc3RkOjpjb3V0IDw8IHJhZGl4KDUsMikgICA8PCBzdGQ6OmVuZGwKICAgICAgICAgICAgICA8PCByYWRpeCg1LDEwKSAgPDwgc3RkOjplbmRsCiAgICAgICAgICAgICAgPDwgcmFkaXgoLTUsMTApIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgIDw8IHJhZGl4KDE1LDIpICA8PCBzdGQ6OmVuZGwKICAgICAgICAgICAgICA8PCByYWRpeCgxNSw3KSAgPDwgc3RkOjplbmRsCiAgICAgICAgICAgICAgPDwgcmFkaXgoMTUsOCkgIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgIDw8IHJhZGl4KDE1LDEwKSA8PCBzdGQ6OmVuZGwKICAgICAgICAgICAgICA8PCByYWRpeCgxNSwxNCkgPDwgc3RkOjplbmRsCiAgICAgICAgICAgICAgPDwgcmFkaXgoMTUsMTUpIDw8IHN0ZDo6ZW5kbAogICAgICAgICAgICAgIDw8IHJhZGl4KDE1LDE2KTsKfQ==