難易度評価

難易度を1〜10段階で評価できます。投票はあとから変更・取り消しできます。

難易度(投票) 未投票 (0票)

投票の分布

まだ投票はありません。

  1. Lv.10票
  2. Lv.20票
  3. Lv.30票
  4. Lv.40票
  5. Lv.50票
  6. Lv.60票
  7. Lv.70票
  8. Lv.80票
  9. Lv.90票
  10. Lv.100票

難易度の目安を見る ↗

ログインして難易度を投票

外部サイトへ移動します

リンク先の URL を確認してから開いてください。

別タブで開く

Primorial

作成者 taiki0715

難易度(作成者設定) Lv.8

難易度(投票) 未投票 (0票)

実行時間制限
2 秒
メモリ制限
512 MiB

解説

Lucy DPをすることを考えます。f(n,x)f(n,x)をxx以下の素数で篩って残った正の整数の積とします。求めるものはf(n,n)f(n,\sqrt n)です。また、g(n,x)g(n,x)をxx以下の素数で篩って残った正の整数の個数とします。
この時、以下の漸化式が成り立ちます。

f(n,x)={n!if x=1f(n,x−1)f(x−1,x−1)f(⌊nx⌋,x−1)xg(⌊nx⌋,x−1)−g(x−1,x−1)if x2≤n, x is primef(n,x−1)otherwise\begin{equation*} f(n,x)= \begin{cases} n! & \text{if $x=1$}\\ \frac{f(n,x-1)f(x-1,x-1)}{f(\lfloor\frac{n}{x}\rfloor,x-1)x^{g(\lfloor\frac{n}{x}\rfloor,x-1)-g(x-1,x-1)}} & \text{if $x^2\le n$, $x$ is prime}\\ f(n,x-1) & \text{otherwise} \end{cases} \end{equation*}

g(n,x)={n−1if x=1g(n,x−1)−g(⌊nx⌋,x−1)+g(x−1,x−1)if x2≤n, x is primeg(n,x−1)otherwise\begin{equation*} g(n,x)= \begin{cases} n-1 & \text{if x=1}\\ g(n,x-1)-g(\lfloor\frac{n}{x}\rfloor,x-1)+g(x-1,x-1) & \text{if $x^2\le n$, $x$ is prime}\\ g(n,x-1) & \text{otherwise} \end{cases} \end{equation*}

初期値のn!n!を998244353998244353で割った余りは高速に計算できることが知られています。Library Checker
また、(高速な)エラトステネスの篩や埋め込みなどでも解けます。

ユーザー解説

ユーザー解説を書く

ユーザー解説はまだありません。