F - Product Equality 解説 by chro4896


公式解説の補足です。

公式解説では乱択アルゴリズムとして紹介されていますが、\(S\) に含める数を増やせば決定的なアルゴリズムになります。
具体的には、\(10^{9}\)以上\(2\times10^{9}\)以下の素数を\(223\)個以上\(S\) に含めれば、中国剰余定理により確実に判定できます。
公式解説に書かれている、「この判定が失敗する\(x\)は高々\(222\)個しかありません」という事実からも、\(223\)個あれば十分であることがわかります。

また、中国の剰余定理は素数であることが必須ではありません。ただ、無駄がないように\(S\) に含める数は互いに素であることが望ましいです。
そのため、小さい方から順に素数をとっていき、その素数の累乗で\(2\times10^{9}\) を超えない最大のものを\(S\) に入れていくことで\(S\) を構成することも考えられます。
この場合に決定的なアルゴリズムにするためには、厳密な値は確認していませんが、少なくとも\(333\) 番目あたりの素数まで考えれば十分だと思われます。
\(333\) 番目辺りの素数は\(2000\) 程度であるため、\(333\) 番目までの素数について、その素数の累乗で\(2\times10^{9}\) を超えない最大のものは最悪でも\(10^{6}\) を少し下回る程度です。
実際には\(10^{6}\) を超えるものも多いことを考慮すると、\(333\) 個で十分だと思われます。

以下は後者の方針の提出です。
https://atcoder.jp/contests/abc339/submissions/50060729
https://atcoder.jp/contests/abc339/submissions/50101006

投稿日時:
最終更新: