atcoder#ARC060B. [ABC044D] 桁和

[ABC044D] 桁和

题目描述

2 2 以上の整数 b b および 1 1 以上の整数 n n に対し、関数 f(b,n) f(b,n) を次のように定義します。

  • n < b n\ <\ b のとき f(b,n) = n f(b,n)\ =\ n
  • n  b n\ \geq\ b のとき $ f(b,n)\ =\ f(b,\,{\rm\ floor}(n\ /\ b))\ +\ (n\ {\rm\ mod}\ b) $

ここで、 floor(n / b) {\rm\ floor}(n\ /\ b) n / b n\ /\ b を超えない最大の整数を、 n  mod b n\ {\rm\ mod}\ b n n b b で割った余りを表します。

直感的に言えば、f(b,n) f(b,n) は、n n b b 進表記したときの各桁の和となります。 例えば、

  • f(10,87654)=8+7+6+5+4=30 f(10,\,87654)=8+7+6+5+4=30
  • f(100,87654)=8+76+54=138 f(100,\,87654)=8+76+54=138

などとなります。

整数 n n s s が与えられます。 f(b,n)=s f(b,n)=s を満たすような 2 2 以上の整数 b b が存在するか判定してください。 さらに、そのような b b が存在するならば、その最小値を求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

n n s s

输出格式

f(b,n)=s f(b,n)=s を満たす 2 2 以上の整数 b b が存在するならば、そのような b b の最小値を出力せよ。 そのような b b が存在しないならば、代わりに -1 を出力せよ。

题目大意

题目描述

对于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翻译,但他被禁言了,由我代发

87654
30
10
87654
138
100
87654
45678
-1
31415926535
1
31415926535
1
31415926535
-1

提示

制約

  • 1  n  1011 1\ \leq\ n\ \leq\ 10^{11}
  • 1  s  1011 1\ \leq\ s\ \leq\ 10^{11}
  • n,s n,\,s はいずれも整数である