法法塔大法好ww
窝太菜了TAT,写着玩,表喷ww
FFT:
求
多项式两种表示方法:点值表示法、系数表示法
如果用点值表示法的话,那么乘法就是
O(n)
的
FFT就是把系数表示变为点值表示,相乘后再变回系数表示,并且可以做到 O(nlogn)
单位复根:
w[n]
,即
(w[n])n=1
窝们将
(w[n])k
记为
w[n]k
这里取的点就是 w[n]0,w[n]1,⋯,w[n]n−1
FFT :
yk=∑n−1i=0ai(w[n]k)i
FFT
−1
:
ak=1n∑n−1i=0yi(w[n]−k)i
所以做IFFT的时候就只要用
w[n]−k
来替换
w[n]k
就好了QAQ
考虑如何求得
yi
令
y[0](x)=a0+a2x+⋯+an−2xn−22
y[1](x)=a1+a3x+⋯+an−1xn−22
则
y=y[0](x2)+xy[1](x2)
可以得到
yk=y[0]k+w[n]ky[1]k
yk+n2=y[0]k−w[n]ky[1]k
然后就可以分治搞了嘤QAQ
将变换后的系数用二进制表示,发现就是0,1,2,…n-1的倒序,所以就可以变了啊QAQ
FWT:
求
( ⊕ 代表一个位运算符)
同样考虑构造一种变换方式使得A、B能直接相乘
既然是位运算,那么每一位相互独立。。。
下一步当然是%pls辣ovo
异或
与
或
至于板子么。。当然是A+B啦!23333