多项式求逆——学习笔记

基本概念
  • 多项式的度:对于一个多项式 A(x) A ( x ) ,称其最高项次数为多项式的度,记作 degA d e g A

  • 多项式的逆元:对于 A(x) A ( x ) 若存在 B(x) B ( x ) 满足 degBdegA d e g B ≤ d e g A

    A(x)B(x)1(modxn) A ( x ) B ( x ) ≡ 1 ( mod x n )

    就称 B(x) B ( x ) A(x) A ( x ) 在模 xn x n 意义下的逆元。

    实际上就是多项式乘法的逆元。注意是多项式逆元是在数乘法有逆元的前提下才有的。

算法

大概是个倍增。

n=1 n = 1 时, A(x)a0(modx) A ( x ) ≡ a 0 ( mod x ) ,所以 A1(x)=c1 A − 1 ( x ) = c − 1

n>1 n > 1 时,设 B(x) B ( x ) A(x) A ( x ) xn x n 下的逆元,设 B(x) B ′ ( x ) A(x) A ( x ) xn2 x ⌊ n 2 ⌋ 下的逆元且已求出,则

A(x)B(x)1(modxn2),A(x)B(x)1(modxn2) A ( x ) B ( x ) ≡ 1 ( mod x ⌊ n 2 ⌋ ) , A ( x ) B ′ ( x ) ≡ 1 ( mod x ⌊ n 2 ⌋ )

两式相减,得
B(x)B(x)0(modxn2) B ( x ) − B ′ ( x ) ≡ 0 ( mod x ⌊ n 2 ⌋ )

现在是重要的一步,两边平方,把 xn2 x ⌊ n 2 ⌋ 推到 xn x n :
B2(x)2B(x)B(x)+B2(x)0(modxn) B 2 ( x ) − 2 B ( x ) B ′ ( x ) + B ′ 2 ( x ) ≡ 0 ( mod x n )

然后同乘 A(x) A ( x ) :
B(x)2B(x)B2(x)A(x)(modxn) B ( x ) ≡ 2 B ′ ( x ) − B ′ 2 ( x ) A ( x ) ( mod x n )

就可以倍增啦,用 NTT N T T 做乘法,复杂度:
T(n)=T(n/2)+O(nlogn)=O(nlogn) T ( n ) = T ( n / 2 ) + O ( n log ⁡ n ) = O ( n log ⁡ n )

模板:

#include<cstdio>
int main(){

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值