この問題は素因数分解を利用することで解くことができます.
最初に具体例で説明します.サンプル 1 を題材とします.サンプル 1 では が与えられますが, を素因数分解すると下記のようになります.
これを与式に代入すると次式が得られます.
上式の左辺・中辺との等号を満たすように を(可能な範囲で)素因数分解することを考えます.例えば,素因数 について考えると,左辺の の指数が であることから「 の素因数 の指数が 以上である」が要請され,つまり「 の の指数が 以上である」が要請されます.残りの素因数についても同様にすると, は次のように書き表すことができます.
よって, のとき の最小値が得られるので,答えは と求められます.
次に,実装について説明します.例えば,下記の ステップで解けます.
まずは整数 を素因数分解します.試し割り法を使えば時間計算量 で計算可能です.このとき,素因数 と指数 のペア を保持するように素因数分解しておくと後で便利です.
具体例でも触れた通り, に含まれる素因数 の指数 は大きい方のみ使用すれば十分なので, などとして素因数分解の結果をマージします.漏れが発生しないように注意してください.
以上の結果と整合するように を素因数分解します.素因数 の指数 について, を計算することで における素因数 の指数の下限が と求められます( は天井関数です).よって,素因数 について掛け算を 回行い,これをすべての素因数 について繰り返せば答えを求められます.オーバーフローしないように による剰余計算を適宜行う必要があることに注意してください.