【多项式乘法】
首先根据单位根反演,问题可以转化为对于一个多项式带入\(N\)个单位根求值。
形式化地说:给定\(F(x)=F[0]+F[1]x+F[2]x^2+\cdots +F[N-1]x^{N-1}\),对\(k\in [0,N-1]\)求出\(G[k]=F(\omega_N^k)\)
考虑分治,\(F(x)\)的系数分成奇偶两部分,分别设:
\(FL(x)=F[0]+F[2]x+\cdots +F[N-2]x^{\frac{N}{2}-1}\)
\(FR(x)=F[1]+F[3]x+\cdots +F[N-1]x^{\frac{N}{2}-1}\)
则不难发现\(F(x)=FL(x^2)+xFR(x^2)\)
我们把单位根带入进去,即
\(F(\omega_N^k)=FL(\omega_N^{2k})+\omega_N^kFR(\omega_N^{2k})\)
接下来分两种情况,令\(k\in [0,\frac{N}{2}-1]\)
那么
\(F(\omega_N^k)=FL(\omega_{\frac{N}{2}}^{k})+\omega_N^kFR(\omega_{\frac{N}{2}}^{k})\)
\(F(\omega_N^{\frac{N}{2}+k})=FL(\omega_{\frac{N}{2}}^{k})-\omega_N^kFR(\omega_{\frac{N}{2}}^{k})\)
以上是单位根的推法,但是平常更多是使用模意义下的原根,因此我们先要找到\(\omega_N^1\)在原根中对应的东西。
我们假设模数为质数\(p\),原根为\(g\),则\(g^k(k\in [0,p-2])\)恰好取遍膜\(p\)意义下的所有数
假设\(\omega_N^1\)对应于\(g^k\),那么\(g^k\)的阶为\(N\),即\(\frac{p-1}{gcd(p-1,k)}=N\),因此要求\(N|p-1\)。
那么取\(k=\frac{p-1}{N}\)即可满足要求。同时我们可以代入上面的式子,可以发现之前的性质依然成立。
实现时,通常采用蝴蝶变换的技巧,把递归变成递推。
例如第\(6(110_2)\)个位置的系数,落到底层即为第\(3(011_2)\)个位置(当\(N=2^3\)时)
实际上就是将这个数的二进制反转
证明考虑如果当前是奇数就会落到右边,偶数就会落到左边。

浙公网安备 33010602011771号