[NFLSOJ529]打卡任務
題面
NFLSOJ
題解
列出二元生成函數的式子,那麼答案爲\([x^ky^m](\prod_{i=1}^n(1+x^iy))\bmod (x^n-1)\)。
循環卷積考慮帶入單位根進行運算,也就是先帶入 DFT 矩陣求出點值最後再帶 IDFT 矩陣把係數弄回來,有:
\[\begin{aligned}
[x^ky^m][x^ky^m](\prod_{i=1}^n(1+x^iy))\bmod (x^n-1)=[y^m]\frac 1n\sum_{j=0}^{n-1}\omega_{n}^{-jk}\prod_{i=0}^{n-1}(1+\omega_{n}^{ij}y)
\end{aligned}
\]
將\(\gcd(n,j)=d\)提出來,那麼僅有\(\omega_{n}^0,\omega_{n}^d...\omega_{n}^{(n-1)d}\)會算到貢獻,我們可以將上下同除\(d\),那麼進一步可得
\[\begin{aligned}
\ [y^m]\frac 1n\sum_{j=0}^{n-1}\omega_{n}^{-jk}\prod_{i=0}^{n-1}(1+\omega_{n}^{ij}y)&=[y^m]\frac 1n\sum_{j=0}^{n-1}\omega_{n}^{-jk}\prod_{i=0}^{\frac nd-1}(1+\omega_{\frac nd}^{i}y)^d\\
&=[y^m]\frac 1n\sum_{d|n}\prod_{i=0}^{\frac nd-1}(1+\omega_{\frac nd}^{i}y)^d\sum_{j=0}^{n-1}[\gcd(n,j)=d]\omega_{n}^{-jk}
\end{aligned}
\]
對於後面一部分莫比烏斯反演:
\[\begin{aligned}
\sum_{j=0}^{n-1}[\gcd(n,j)=d]\omega_{n}^{-jk}&=\sum_{j=0}^{\frac nd-1}[\frac nd\perp j]\omega_{\frac nd}^{-jk}\\
&=\sum_{j=0}^{\frac nd-1}\sum_{e|\frac nd,e|j}\mu(e)\omega_{\frac nd}^{-jk}\\
&=\sum_{e|\frac nd}\mu(e)\sum_{j=0}^{\frac n{de}-1}\omega_{\frac n{de}}^{-jk}\\
&=\sum_{e|\frac nd}\mu(e)[\frac n{de}|k]\frac n{de}
\end{aligned}
\]
對於前面的式子\(\prod_{i=0}^{\frac nd-1}(1+\omega_{\frac nd}^{i}y)^d\),我們可以尋找\(\prod_{i=0}^{\frac nd-1}(1+\omega_{\frac nd}^{i}y)\)的性質。
注意到對於兩個多項式如果他們的根相同而且存在一項的係數相等,那麼他們相等,注意到\(y^n-1\)的根爲\(\omega_n^0,\omega_n^1...\omega_n^{n-1}\),而我們後面式子的根爲\(-\omega_{\frac nd}^0,-\omega_{\frac nd}^1...-\omega_{\frac nd}^{\frac nd-1}\),構造一個多項式\(1+(-1)^{\frac nd+1}y^{\frac nd}\)與它的根相同且常數項相同,可以將原多項式寫成此多項式。
那麼現在原式化爲
\[\begin{aligned}
&[y^m]\frac 1n\sum_{d|n}\prod_{i=0}^{\frac nd-1}(1+\omega_{\frac nd}^{i}y)^d\sum_{j=0}^{n-1}[\gcd(n,j)=d]\omega_{n}^{-jk}\\
=&\frac 1n\sum_{d|n}\left([y^m](1+(-1)^{\frac nd+1}y^{\frac nd})^n\right)\left(\sum_{e|\frac nd}\mu(e)[\frac n{de}|k]\frac n{de}\right)\\
=&\frac 1n\sum_{d|n}\left({d\choose\frac m{d/d}}(-1)^{(\frac nd+1)\frac m{n/d}}\right)\left(\sum_{e|\frac nd}\mu(e)[\frac n{de}|k]\frac n{de}\right)
\end{aligned}
\]
前面的組合數可以通過階乘分段打表得到,而後面那一部分相當於將每個因子分爲三份,時間上均可以承受。
代碼
這裏