Problem
在一個 B 進制數中,找到一個最小的數字 X,使得 2 * X 的結果恰好是 X 循環右移一位的結果 (意即最末位的數字推到首位,其餘往右推一位)。
例如範例給的
|
|
末尾的 8 移動到首位,其餘往右推一位。
Sample Input
|
|
Sample Output
|
|
Solution
假設末位數字是 M,且 M 的數值一定介於 $0 <= M < B$,最後根據公式推
$$2*(NM) = MN, 0 \le M < B \\ 2(N * B + M) = N + B^{(k-1)} * M \\ N = M * \frac{(B^{(k-1)} - 2)}{(2 * B - 1)}$$從位數少開始窮舉,再依序從 M 小的開始窮舉,找到可以整除的整數 N 值,做一次小整數的大數乘除法即可,並不會太難。
|
|