私たちは順番に最高の電力達成可能で最小のベース、2
、および幾何学的合計の計算式を使用して対応するであろうことを認識することによってO((log2 n)^2)
複雑でこれを解決することができます。
1 + r + r^2 + r^3 ... + r^(n-1) = (1 - r^n)/(1 - r)
Renaming the variables, we get:
n = (1 - base^power)/(1 - base)
は、今、私たちは唯一のに必要power
を(floor(log2 n) + 1)
から2
までチェックしてください。それぞれの所与の累乗について、ベースのバイナリ検索を使用してください。たとえば:
10^18
周り
n
については
n = 13:
p = floor(log2 13) + 1 = 4:
Binary search for base:
(1 - 13^4)/(1 - 13) = 2380
...
No match for power = 4.
Try power = 3:
(1 - 13^3)/(1 - 13) = 183
(1 - 6^3)/(1 - 6) = 43
(1 - 3^3)/(1 - 3) = 13 # match
我々は最大(floor(log2 (10^18)) + 1)^2 = 3600
回の反復が必要な場合があります。
私はこの質問がすぐに閉じられると思います。プログラミングパズルの仕様を持つ別のサイトがありますhttp://codegolf.stackexchange.com/ –