#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);
}