[]-52508/レス
Re[1]: 進数の表現
WIZ

# らすかるさんが既にコメントされていますが、私も一生懸命下書きを作ったので書き込ませて頂きます。

質問の問題文が曖昧だと思います。

Mが定義されていないので、何の値かが不明です。
> 例:10進数で0から999999までの整数を表現するコストはlog[10](100000)*10

「例」での数の範囲「10進数で0から999999まで」に含まれる整数の個数は1000000個で、
「log[10](100000)*10」の100000は0が1つ(1桁)少ないのは何故? 書き間違い???

以下、私の想像で補った解釈で回答しますので、話半分に聞いといてください。
・「b進数」「b(>=2)」ということなので、bは2以上の整数である。
・Mを固定して、log[b](M+1)*bを最小にするbを求めれば良い。

自然対数をlnで表すことにします。b ≧ 2に対して
f(b) = log[b](M+1)*b = ln(M+1)*{b/ln(b)}とおきます。

f'(b) = ln(M+1)*{(1*ln(b)-b*(1/b))/(ln(b)^2)} = ln(M+1)*{(ln(b)-1)/(ln(b)^2)}
eを自然対数の底とすれば、
2 ≦ b < eで、f'(b) < 0なので、f(b)は減少
b = eで、f'(b) = 0なので、f(b)は極小
e < bで、f'(b) > 0なので、f(b)は増加

2 < e < 3かつ、bは整数なので、b = 2またはb = 3でf(b)は最小になります。
f(2) = ln(M+1)*{2/ln(2)}
f(3) = ln(M+1)*{3/ln(3)}
⇒ f(2)/f(3) = (2/3){ln(3)/ln(2)} = log[2](3^(2/3)) = log[2](9^(1/3)) > log[2](8^(1/3)) = log[2](2) = 1
⇒ f(2) > f(3)

よって、b = 3のとき、f(b) = log[b](M+1)*bは最小になります。
# f(b)が最小になるbの値がMに依存しないので、問題文がおかしい気がする。

04/17 13:34
[|]
次のレス>
52506のレス
52508にレスを書く
<前のレス

Child K-Tai