快速数论变换(NTT)
update.2025.8.1
快速数论变换(NTT)
- 前置知识: 快速傅里叶变换(FFT)
FFT的缺点
我们使用单位根需要用到三角函数来表示,而编程语言内置的三角函数精度都不理想当使用卷积的场景是大整数系数时,FFT的精度错误就更加明显,产生的误差将会极其大
我们能不能改良一下FFT的这个缺点呢?
原根
我们发现精度问题主要在于单位根,这无法避免与实数域打交道,当我们想解决整数问题时就需要避免引用实数域上的概念
因此我们使用数论中的概念原根来代替单位根
接下来我们介绍原根:
关于NTT的注意点
在我们实现FFT的过程中,为了便于实现分治,我们会将多项式项数补成2的幂次,设模数为m,由费马小定理得
因此我们发现在进行NTT的时候对于模数是有限制的
\(常用模数:\)
当题目要求的模数不是以上常用模数怎么办呢?
我们可以按照以上两种模数分别跑两遍NTT得到两种多项式
再根据这两种多项式的系数分别列方程
由于模数都是质数彼此互质
我们用中国剩余定理(CRT)解一下方程就可以还原到未取模的多项式
再对于该多项式系数取题目要求的模数即可

浙公网安备 33010602011771号