路套路单位根滤波抽隔项
要 ∑k≡r (mod m)ak,就把 f(x)=∑akxk 在 m 次单位根 1,ω,…,ωm−1 上各取一次值再加权平均:m1∑jω−jrf(ωj) 恰好只剩下标 ≡r 的那些项。
解题套路
设 f(x)=∑kakxk,ω=cosm2π+isinm2π 是 m 次单位根。则对每个 r,
k≡r (mod m)∑ak=m1j=0∑m−1ω−jrf(ωj).
m=2 就是最熟的那一条:2f(1)+f(−1) 是偶次项和、2f(1)−f(−1) 是奇次项和。m=4 时 ω=i,四个取值点是 1,i,−1,−i。
为什么成立
把右边的求和交换次序,ak 的系数是
m1j=0∑m−1ωj(k−r).
- 若 m∣k−r,每一项都是 1,和为 m,系数为 1;
- 否则 ωk−r=1,这是公比不为 1 的等比和,等于 ωk−r−1ωm(k−r)−1=0。
于是只有下标 ≡r 的 ak 活下来,别的全被抵消——「滤波」这个名字就是这个意思。
用在二项式上
取 f(x)=(1+x)n,ak=Cnk,立刻得到「每隔 m 个取一个二项系数」的和。m=4 时四个点的值是 2n、(1+i)n、0、(1−i)n——其中 (1+x)n 在 x=−1 处取 0(n⩾1),白送一项,所以真正要算的只有 (1±i)n。
(1±i)n 不必写成模与辐角的形式:(1+i)2=2i、(1+i)4=−4,四次一循环,指数除以 4 取余就能写出来;(1−i)n 是它的共轭,实部同、虚部反。
注意
- r 要按题目问的那一组取,别与「第几项」混淆:问的是下标 k 除以 m 的余数。
- 别漏掉 j=0 那一项(就是 f(1)),它往往是主项。
- 算完拿一个小的 n 代进去验一遍——这一步几秒钟,能挡住 ω−jr 的指数写反。