单位根反演学习笔记

单位根反演学习笔记

单位根反演

用途

求多项式特定次数(为某个数倍数)的和,比如位数之和膜某个数的生成函数之和

单位根性质

单位根有一些特殊的性质。考虑要求的式子

\[ans=\sum_{i=0}^{\frac n k}[x^{ik}]f(x)=\sum_{i=0}^n[k|i][x^i]f(x) \]

考虑构造函数使得$g(k,i)=[k|i] $

又由于\(\omega_k^{ij}=\omega_k^0=1\),且\([k\not|~~i]\)的时候都不等于1,我们考虑利用这一性质。令

\[g(k,i)=\frac{1}{k}\sum_{j=0}^{k-1}\omega_k^{ij} \]

证明:除开上述条件成立的情况,其他情况是一个等比数列求和,即

\[\frac{1}{k} \frac{\omega_{k}^{ki}-\omega_{k}^{0}}{\omega_{k}^{i}-1}=0 \]

所以\(g(k,i)=[k|i]\)

公式推导

那么我们就可以用单位根来表示这些项的系数和了!

\[\begin{aligned} \sum_{i=0}^{\left[\frac{n}{k}\right]}\left[x^{i k}\right] f(x) &=\sum_{i=0}^{n}[k | i]\left[x^{i}\right] f(x) \\ &=\sum_{i=0}^{n}\left[x^{i}\right] f(x) \frac{1}{k} \sum_{j=0}^{k-1} \omega_{k}^{j i} \\ &=\frac{1}{k} \sum_{i=0}^{n} a_{i} \sum_{j=0}^{k-1} \omega_{k}^{i j} \\ &=\frac{1}{k} \sum_{j=0}^{k-1} \sum_{i=0}^{n} a_{i}\left(\omega_{k}^{j}\right)^{i} \\ &=\frac{1}{k} \sum_{j=0}^{k-1} f\left(\omega_{k}^{j}\right) \end{aligned} \]

至于为什么叫做反演呢...我想可能是用了多项式本身来带入构造出来的式子,来表示要求的答案。而且复杂度也正好相反是\(O(k\times calc(f))\)

然后这个单位根跟FFTNTT的一样,也可以用原根的\((p-1)/n\)次方来代替。

注意有些题不好求F,也可以只用单位根反演化简\([k|i]\)

例题

dbzoj 3328

令A为递推矩阵,我们要求

\[\sum_{i=0}^n[k|i] C^i_nA^i \]

\[=\sum_{i=0}^n\frac 1 k\sum_{j=0}^{k-1} \omega_k^{ij}C^{i}_nA^i \]

\[=\frac 1 k \sum_{j=0}^{k-1}\sum_{i=0}^n C^i_n\omega_k^{ij}A^i \]

\[=\frac 1 k\sum_{j=0}^{k-1}(A\omega_k^j+I)^n \]

复杂度\(O(tk\log n)\),注意要找原根。

白兔之舞

目前在做HNOI2017,准备做HNOI2019的时候再写。

upd1 :2017做完了5/6,剩下一道要用EXLUCAS不想写,等我写完就更

posted @ 2020-05-09 17:27  lcyfrog  阅读(265)  评论(0编辑  收藏  举报