【学习笔记】多项式 (2.快速数论变换)

这篇笔记介绍了多项式相关的算法竞赛知识,包括模数的阶、剩余类、原根的概念及其性质。特别地,讨论了快速数论变换(NTT)在模数为质数时的应用,作为解决带模数的多项式乘法的有效方法,并给出了NTT的实现代码。同时,对比了快速傅里叶变换(FFT)和NTT在效率上的差异。

这是一篇基于OI Wiki中的内容进行整理的算法竞赛中关于多项式的相关内容的第二篇笔记。

1.前置知识

1.1 阶

若正整数 a , p a,p a,p互质,且满足 p > 1 p>1 p>1,则对于 a n ≡ 1 ( m o d p ) a^n ≡ 1 \pmod p an1(modp) n n n,我们称这样的 n n n a a a p p p的阶,记作 δ p ( a ) \delta_p(a) δp(a)

如: 2 2 2 3 3 3 8 8 8的阶,因为 3 3 3 8 8 8互质,且 n = 2 n=2 n=2是最小的满足 3 n ≡ 1 ( m o d p ) 3^n ≡ 1\pmod p 3n1(modp)的值。

阶具有以下性质:

  1. 对于 i ∈ [ 0 , δ p ( a ) ) i∈[0,\delta_p(a)) i[0,δp(a)),所有的 a i ( m o d p ) a^i \pmod p ai(modp)结果互不相同。(可以用反证法证明)
  2. a n ≡ 1 ( m o d p ) a^n≡1\pmod p an1(modp),则 δ p ( a ) ∣ n \delta_p(a) \vert n δp(a)n。( 3 2 ≡ 1 ( m o d 8 ) 3^2≡1\pmod 8 321(mod8) 3 4 ≡ 1 ( m o d 8 ) 3^4≡1\pmod 8 341(mod8)
  3. p p p为质数,则 δ p ( g i ) = δ p ( g ) \delta_p(g^i)=\delta_p(g) δp(gi)=δp(g)的充要条件为 gcd ⁡ ( δ p ( g ) , i ) = 1 \gcd(\delta_p(g),i)=1 gcd(δp(g),i)=1,其中 g g g为任意的正整数。
  4. δ p ( a b ) = δ p ( a ) gcd ⁡ ( b , δ p ( a ) ) \delta_p(a^b)=\frac{\delta_p(a)}{\gcd(b,\delta_p(a))}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值