[多项式算法](Part 3)MTT 任意模数FFT/NTT 学习笔记
其他多项式算法传送门: [多项式算法](Part 1)FFT 快速傅里叶变换 学习笔记 [多项式算法](Part 2)NTT 快速数论变换 学习笔记 [多项式算法](Part 4)FWT 快速沃尔什变换 学习笔记 [多项式算法](Part 5)分治FFT 学习笔记 $3.Hard-MTT$ 定义 MTT $(Maoxiao\ Theoretic\ Transforms)$ 中文名称:不知道,上面的英文全称也是瞎编的 (Most TLE Transforms) $Q:$现在学了FFT和NTT,那么MTT又是什么?有什么用? $A:$有大用 如果现在需要求两个整数多项式卷积,序列长度$n\le10^5$,多项式系数$A_i,B_i\le 10^9$,答案对$p\le 10^9$取模。 这时你就会发现,在运算过程中值域会到达$10^{23}$级别!使用FFT会炸精度,而NTT会因为模数的性质而失去作用。 你可以选择高精度,但是高精不仅难实现,效率也较为低下,而 python , java 等自带高精的语言在部分赛事中也禁止使用。 这时我们就需要使用MTT进行运算。 分析 MTT有$2$种方法,一种是三模数NTT,然后是拆系数FFT。 其中NTT精度优秀,但常数较大,而FFT则相反。 下面对这两种算法进行介绍。 三模数NTT 这个算法的主要思想是用$3$个满足NTT性质的$10^9