[ABC044D] 桁和

题意翻译

``` 题目描述 对于2以上的整数b和一个1以上的整数n,函数f(b,n)的定义如下: 1.若n<b,f(b,n)=n; 2.若n>=b,f(b,n)=f(b,floor(n/b))+(n%b). 说白了就是即n在b进制下各位数的和 举个例子: f(10,87654)=8+7+6+5+4=30 f(100,87654)=8+76+54=138 设函数f(b,n)的值为s; 输入输出格式 输入格式 输入包含两个数,代表n,s的值 输出格式 输出包含1个数,是b的值,如果找不到符合要求的b值,则输出-1 ``` 注:此为[Over_The_Best](https://www.luogu.org/space/show?uid=118196)翻译,但他被禁言了,由我代发

题目描述

[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 $ はいずれも整数である