[ABC044D] 桁和
题意翻译
一天,可爱的 zqx 发现了一个很好玩的函数。
对于**大于** $1$ 的整数 $b$ 和**正整数** $n$,她定义 $f(b,n)$ 为 $n$ 在 $b$ 进制下的数位和。形式化地,定义 $f(b,n)$:
$$
f(b,n)=\begin{cases}
n, & n\lt b \\
\displaystyle f\left(b,\left\lfloor\frac{n}{b}\right\rfloor\right)+(n\bmod b), & n\ge b
\end{cases}
$$
这里,$n\bmod b$ 表示 $n$ 除以 $b$ 得到的余数。
现在有正整数 $n,s$,zqx 想要知道是否存在一个大于 $1$ 的整数 $b$,使得 $f(b,n)=s$。如果存在的话,你还需要告诉她符合条件的 $b$ 的**最小值**。(不存在输出 $-1$)
题目描述
[problemUrl]: https://atcoder.jp/contests/abc044/tasks/arc060_b
$ 2 $ 以上の整数 $ b $ および $ 1 $ 以上の整数 $ n $ に対し、関数 $ f(b,n) $ を次のように定義します。
- $ n\ <\ b $ のとき $ f(b,n)\ =\ n $
- $ n\ \geq\ b $ のとき $ f(b,n)\ =\ f(b,\,{\rm\ floor}(n\ /\ b))\ +\ (n\ {\rm\ mod}\ b) $
ここで、$ {\rm\ floor}(n\ /\ b) $ は $ n\ /\ b $ を超えない最大の整数を、 $ n\ {\rm\ mod}\ b $ は $ n $ を $ b $ で割った余りを表します。
直感的に言えば、$ f(b,n) $ は、$ n $ を $ b $ 進表記したときの各桁の和となります。 例えば、
- $ f(10,\,87654)=8+7+6+5+4=30 $
- $ f(100,\,87654)=8+76+54=138 $
などとなります。
整数 $ n $ と $ s $ が与えられます。 $ f(b,n)=s $ を満たすような $ 2 $ 以上の整数 $ b $ が存在するか判定してください。 さらに、そのような $ b $ が存在するならば、その最小値を求めてください。
输入输出格式
输入格式
入力は以下の形式で標準入力から与えられる。
> $ n $ $ s $
输出格式
$ f(b,n)=s $ を満たす $ 2 $ 以上の整数 $ b $ が存在するならば、そのような $ b $ の最小値を出力せよ。 そのような $ b $ が存在しないならば、代わりに `-1` を出力せよ。
输入输出样例
输入样例 #1
87654
30
输出样例 #1
10
输入样例 #2
87654
138
输出样例 #2
100
输入样例 #3
87654
45678
输出样例 #3
-1
输入样例 #4
31415926535
1
输出样例 #4
31415926535
输入样例 #5
1
31415926535
输出样例 #5
-1
说明
### 制約
- $ 1\ \leq\ n\ \leq\ 10^{11} $
- $ 1\ \leq\ s\ \leq\ 10^{11} $
- $ n,\,s $ はいずれも整数である