C - 階乗と素因数 Editorial /

Time Limit: 1 sec / Memory Limit: 31 MB

問題文

N! = 1 \times 2 \times ... \times N に含まれる素因数 p の個数を F(N,\ p) と書くことにする. (ただし p は素数である)
つまり,N!/p^k が整数となるような最大の非負整数 kF(N,\ p) である.
例えば,N=12 のとき 12! = 479001600 = 2^{10} \times 3^5 \times 5^2 \times 7 \times 11 であるから,F(12,\ 2) = 10,\ F(12,\ 3) = 5,\ F(12,\ 47) = 0 などである.

今,素数 p と整数 x が与えられるので,N-F(N,\ p) = x となる最小の非負整数 N を求めてください.
なお,0! = 1 である.

入力

最初の行にはテストケースの数 T が与えられる.
その後の行には T 個のテストケースが続く.

各テストケースは 1 行のみからなり,半角スペース区切りで p,\ x が与えられる.

制約

  • 0 \leq T \leq 5000
  • 2 \leq p \leq 47p は素数である
  • 0 \leq x \leq 50x は整数である

出力

各テストケースに対して,N-F(N,\ p) = x となる最小の非負整数 N を出力してください.
ただし,そのような N が存在しなければ -1 を(シングルクォーテーションを除いて)出力してください.

入力例

2
5 0
47 50

出力例

0
51

writer: laycrs