之所以取这个标题。。。
是因为我自己以前只认为FFT只是一种精妙的构造。
并没能意识到这只是信息学中庞大多项式理论中的the tip of the iceberg
查漏补缺格物致知。
多项式:
多项式可以是一个形式幂级数,也可以是一个多项式函数。
多项式环理论上是指一个对于加减乘封闭的群,实际上常用Z[x]/(f(x))表示在(modf(x))的环境下的加减乘封闭的群。同理Z/(998244353)表示在(mod998244353)意义下的加减乘封闭的群,他们都是环。
卷积:
强烈推荐阅读WC2018营员交流的LCA的浅谈卷积定理在OI中的应用及扩展
ci=j⋅k=i∑ajbk
卷积定理:




卷积定理。
上面的PPT同时告诉了我们只要有n次单位元(和一些一般都满足的性质),那么我们就可以将长度为n的循环卷积改为点积。

后文是钻进了线性代数的(XX)中,所以可以不用管了。
只要满足上述方程组的变换矩阵和循环律就可以DFT然后循环卷积变点积。
DFT:我上一栏好像说太多了。
就是变换。
只要有2n个点值(和逆元)就可以支持点乘代替多项式乘法。
只要有n次单位根(和n的逆元)就可以支持点乘代替长度为n的循环卷积。
只要猜出了变换矩阵和有n次单位根(和n的逆元)就可以支持点乘代替长度为n的有循环性的卷积。
不循环的卷积没办法套快速幂,数据范围因为要卡的住人所以会对模数和单位根很不友好。
多维DFT:
首先对于一般的循环卷积:雷打不动Trans(a)[i]=∑j=0nωnija[j]
a[i]=n1∑j=0n−ωnijtTrans(a)[j]
对于多个环:R1,R2,R3...Rn分别有单位根ω1,ω2...ωn
那么对于a(x1,x2,…,xn)=∑i1=0n1−1⋯∑id=0nd−1ai1,i2,…,idx1i1…xdid.
定义傅里叶变换将a变换成b=F(a)为
bk1,k2,…,kd=j1=0∑n1−1⋯jd=0∑nd−1ω1j1k1…ωdjdkdaj1,j2,…,jd.
其逆变换为
aj1,j2,…,jd=n1−1n2−1…nd−1k1=0∑n1−1⋯kd=0∑nd−1ω1−j1k1…ωd−jdkdbk1,k2,…,kd.
然后就可以做codeforces 1103 E. Radix sum了。
FFT:
nlogn完成长度为2n的DFT变换,需要2i(0<=i<=n)次单位根,条件比较苛刻但是应用较广???因此广为人知(背代码)。