atcoder#ARC060B. [ABC044D] 桁和

[ABC044D] 桁和

配点 : 500500

問題文

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

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

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

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

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

などとなります。

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

制約

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

入力

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

nn

ss

出力

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

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