Skip to content →

記数法

環 \(K\) を固定する。 \(K\) の元からなる列 \(a_0 \leq a_1 \leq \cdots \) と \(K\) の元の集合からなる列 \(w_0 \subseteq w_1 \subseteq \cdots \) を取る。\(n_i \in w_i\) を満たす数列 \((n_0, n_1, \ldots)\) に対して、 \(\sum_i a_in_i\) を \(n\) が表す数と呼ぶ。

有理数のべきを基底

素数 \(p\) について、\(a_i=(p/q)^i, w_i =[0,p-1]\) とする。\(n\) が非負整数 \(A\) を表すとすると、\(n_0 = A \bmod p\) によって一項目が決まる。\(A \leftarrow q\lfloor A / p \rfloor\) として同様の操作を再帰的に行えば一意に \(n\) が定まる(ARC149F)。

互除法

\(K = \mathbb{N}\) とする。\(a_{i+1}=q_ia_i+a_{i-1}, w_i = [0,q_{i}]\) によって \(a, w\) を定める。

\((0,0,\ldots, 0, 1,q_n,0)=(0,0,\ldots, 0, 0,0,1)\) を可能な限り行う。\((0, q_{1}, q_{2}-1,\ldots,q_n-1) + (1,1,\ldots,1,0)= (0,0,\ldots,0,q_{n})\) より桁数 \(k\) を固定したときの最大の整数は \(\cdots q_{k-4}0q_{k-2}0q_{k}\) である。\(a_0=0\) のときは \(1,2\) 桁目は \(0\) にすることにすれば、\(1+0q_10q_2\cdots q_n=0\dots01\) などにより、数の表現は一意で、大きい方から貪欲に決定できる(ARC057F)。

フィボナッチ

\(a_0=0,a_1=1\) とすると、任意の非負整数が表せる。\(q_i=1\) とすると、ゼッケンドルフ表現になる。このとき \(1\) が隣り合わない。\(A-1\) に対するこの表現に対して、\(1\) を足すことで、LSBが偶数番目の表現が得られる。このような LSB が偶数番目かつ \(1\) 桁目が \(0\) という条件でも一意な表現になる。

負の冪

正整数 \(k \geq 2\) に対して \(a_i=k^i, w_i =[0,k-1]\) とする。\(n_0 = A \bmod k\) によって一項目が決まる。\(A \leftarrow -\lfloor A / k \rfloor\) として同様の操作を再帰的に行えば一意に \(n\) が定まる。フィボナッチ数の符号を交互にしても似たことが言える。

Published in データ構造

Comments

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA