G - Cubic? Editorial by toam


\(B_i=\displaystyle \prod _{k=1}^i A_k\)\(B_i\) の素因数分解を \(\displaystyle \prod{p_j}^{e(i,j)}={p_1}^{e{(i,1)}} \times {p_2}^{a{(i,2)}}\times \ldots\) としたとき,\(\dfrac{B_R}{B_{L-1}}\) の素因数分解 \(\displaystyle\prod p_j^{e(R,j)-e(L-1,j)}= {p_1}^{e{(R,1)}-e{(L-1,1)}} \times {p_2}^{e{(R,2)}-e{(L-1,2)}}\times \ldots\) について \(e{(R,1)}-e{(L-1,1)}, e{(R,2)}-e{(L-1,2)}, \ldots\) がすべて \(3\) の倍数かどうかが判定できれば良いです.これは,\(e'(i,j)=e(i,j)\%3\)\(C_i=\displaystyle \prod p_j^{e'(i,j)}={p_1}^{e'{(i,1)}} \times {p_2}^{e'{(i,2)}}\times \ldots\) としたとき,\(C_R=C_{L-1}\) であることと同値です.このままでは \(C_i\) は非常に大きくなるので,適当に素数 \(P\) を持ってきて \(C_{R}\equiv C_{L-1} \pmod P\) かどうかを判定すればよいでしょう.

実装例(pypy3, 1285ms)

posted:
last update: