atcoder#ABC296D. [ABC296D] M<=ab

[ABC296D] M<=ab

配点 : 400400

問題文

正整数 N,MN,M が与えられます。 次の条件をともにみたす最小の正整数 XX を求めてください。 ただし、そのようなものが存在しない場合は 1-1 を出力してください。

  • XX11 以上 NN 以下の整数 a,ba,b の積として表される。ここで、aabb は同じ整数でも良い。
  • XXMM 以上である。

制約

  • 1N10121\leq N\leq 10^{12}
  • 1M10121\leq M\leq 10^{12}
  • N,MN,M は整数

入力

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

NN MM

出力

問題文の条件をともにみたす最小の正整数 XX を出力せよ。そのようなものが存在しない場合は 1-1 を出力せよ。

5 7
8

まず、7711 以上 55 以下の整数 22 つの積として表すことはできません。 次に、888=2×48=2\times 4 などとして、11 以上 55 以下の整数 22 つの積として表すことができます。

よって、88 を出力します。

2 5
-1

1×1=11\times 1=11×2=21\times 2=22×1=22\times 1=22×2=42\times 2=4 より、 11 以上 22 以下の整数 22 つの積として表す事ができるのは 1,2,41,2,4 のみであるため、 55 以上の数はそのような整数 22 つの積として表すことができません。 よって、1-1 を出力します。

100000 10000000000
10000000000

a=b=100000a=b=100000 (=105)(=10^5)とした時、a,ba,b の積は 1000000000010000000000 (=1010)(=10^{10}) となり、これが答えとなります。 答えが 3232 bit 整数型に収まらない場合があることに注意してください。