快速数论变换(NTT)
前置芝士: 快速傅立叶变换(FFT) 垃圾 \(FFT\) 我们已经知道 \(FFT\) 这个东西他很 \(nb\) 了,但是仍然存在很多局限性 比如说 \(1.\) 要用到复数,所以它很慢 \(2.\) 要用到复数,所以是 \(double\) 类型,有精度误差 \(3.\) 要用到复数,不能取模 \(……\) 我们发现就是这个垃圾复数拖了算法后退,要想办法摆脱它(´༎ຶД༎ຶ`)! 原根 聪明的珂学家们发现了一种奇妙的东西:原根 它可以代替复数进行变换,而且具有优良的性质 阶 若 \(gcd(a,p)==1\) ,且 \(p>1\) 则对于 \(a^x≡1(mod\ p)\) 最小的 \(x\) ,我们称为 \(a\) 的 \(p\) 的阶,记作 \(\delta _p(a)\) 相关定理 定理一 :若 \(p>1\) 且 \(gcd(a,p)==1\) 且 \(a^n≡1(mod\ p)\) ,则 \(\delta _p(a)|n\) 证明:根据定义理解一下吧…… 定理二 : \(\delta _p(a)|\phi(m)\) 证明:由欧拉定理: \(a^{\phi(p)}≡1(mod\ p)\) ,所以 \(\delta _p(a)≤\phi(p)\) ,根据定理一得到 \(\delta _p(a)|\phi(m)\) 原根 若 \(\delta _p(a)=\phi(p)\