想定解

この問題は素因数分解を利用することで解くことができます.

最初に具体例で説明します.サンプル 1 を題材とします.サンプル 1 では (A,B,C)=(24,90,2)(A, B, C) = (24, 90, 2) が与えられますが,A,BA, B を素因数分解すると下記のようになります.

  • 24=23×324 = 2^3 \times 3
  • 90=2×32×590 = 2 \times 3^2 \times 5

これを与式に代入すると次式が得られます.

  • 23×3×x=2×32×5×y=z22^3 \times 3 \times x = 2 \times 3^2 \times 5 \times y = z^2

上式の左辺・中辺との等号を満たすように zz を(可能な範囲で)素因数分解することを考えます.例えば,素因数 22 について考えると,左辺の 22 の指数が 33 であることから「z2z^2 の素因数 22 の指数が 33 以上である」が要請され,つまり「zz22 の指数が 22 以上である」が要請されます.残りの素因数についても同様にすると,zz は次のように書き表すことができます.

  • z=22×3×5×k(kは自然数)z = 2^2 \times 3 \times 5 \times k \,\,\,\,(k は自然数)

よって,k=1k = 1 のとき zz の最小値が得られるので,答えは 6060 と求められます.

次に,実装について説明します.例えば,下記の 33 ステップで解けます.

  1. まずは整数 A,BA, B を素因数分解します.試し割り法を使えば時間計算量 O(A+B)O(\sqrt{A} + \sqrt{B}) で計算可能です.このとき,素因数 ff と指数 nn のペア (f,n)(f, n) を保持するように素因数分解しておくと後で便利です.

  2. 具体例でも触れた通り,A,BA, B に含まれる素因数 ff の指数 nA,nBn_A, n_B は大きい方のみ使用すれば十分なので,n=max(nA,nB)n = \mathrm{max}(n_A, n_B) などとして素因数分解の結果をマージします.漏れが発生しないように注意してください.

  3. 以上の結果と整合するように zz を素因数分解します.素因数 ff の指数 nn について,m=nCm = \lceil \frac{n}{C} \rceil を計算することで zz における素因数 ff の指数の下限が mm と求められます(x\lceil x \rceil は天井関数です).よって,素因数 ff について掛け算を mm 回行い,これをすべての素因数 ff について繰り返せば答えを求められます.オーバーフローしないように 10000000071000000007 による剰余計算を適宜行う必要があることに注意してください.