公式

F - Total Product is N 解説 by vwxyz


原案:vwxyz

\(N\) の約数を \(d_1,d_2,\dots,d_K\) とします。
\(d_1,d_2,\dots,d_a\) の中から \(b\) 個を総積がちょうど \(c\) になるように選ぶことを考え、選んだ整数の総和をスコアと呼ぶことにします。
このようなすべての選び方の総数を \(dp0_{a,b,c}\)、スコアの総和を \(dp1_{a,b,c}\) とします。

このとき、求める答えは \(\sum_{b=1}^{\infty}{dp1_{K,b,N}} \times b!\pmod{998244353}\) です。

\(c\)\(d_a\) の倍数ならば
\(dp0_{a,b,c}=dp0_{a-1,b-1,\frac{c}{d_a}}+dp0_{a-1,b,c}\)
\(dp1_{a,b,c}=dp1_{a-1,b-1,\frac{c}{d_a}}+dp0_{a-1,b-1,\frac{c}{d_a}} \times d_a+dp1_{a-1,b,c}\)
\(c\)\(d_a\) の倍数でないならば
\(dp0_{a,b,c}=dp0_{a-1,b,c}\)
\(dp1_{a,b,c}=dp1_{a-1,b,c}\)
と遷移させることができます。

\(a\)\(c\)\(N\) の約数となる状態のみについて計算すればよいです。
\(1 \leq N \leq 10^{10}\) のとき、\(N\) の約数の個数は高々 \(2304\) 個です。
また、\(\prod_{i=1}^{14}{i}>10^{10}\) なので、\(b\)\(14\) 以下で計算すればよいです。
よって、\(dp0,dp1\)\(O(14 \times 2304^2)\) で計算することができて、これは十分高速です。

投稿日時:
最終更新: