解説
Lucy DPをすることを考えます。f(n,x)をx以下の素数で篩って残った正の整数の積とします。求めるものはf(n,n)です。また、g(n,x)をx以下の素数で篩って残った正の整数の個数とします。
この時、以下の漸化式が成り立ちます。
f(n,x)=⎩⎨⎧n!f(⌊xn⌋,x−1)xg(⌊xn⌋,x−1)−g(x−1,x−1)f(n,x−1)f(x−1,x−1)f(n,x−1)if x=1if x2≤n, x is primeotherwise
g(n,x)=⎩⎨⎧n−1g(n,x−1)−g(⌊xn⌋,x−1)+g(x−1,x−1)g(n,x−1)if x=1if x2≤n, x is primeotherwise
初期値のn!を998244353で割った余りは高速に計算できることが知られています。Library Checker
また、(高速な)エラトステネスの篩や埋め込みなどでも解けます。