説明

10進数 $x$ を $b$ 進数に変換する。

計算量

  • $O(\log x)$

実装例

  • convert_base($x$, $b$):= 10進数 $x$ を $b$ 進数に変換した結果を返す。
template< typename T >
vector< T > convert_base(T x, T b) {
  vector< T > ret;
  T t = 1, k = abs(b);
  while(x) {
    ret.emplace_back((x * t) % k);
    if(ret.back() < 0) ret.back() += k;
    x -= ret.back() * t;
    x /= k;
    t *= b / k;
  }
  if(ret.empty()) ret.emplace_back(0);
  reverse(begin(ret), end(ret));
  return ret;
}