多项式求逆——学习笔记

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

  • 多项式的逆元:对于 A(x)A(x) 若存在 B(x)B(x) 满足 degBdegAdegB≤degA

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

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

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

算法

大概是个倍增。

n=1n=1 时,A(x)a0(modx)A(x)≡a0(modx) ,所以A1(x)=c1A−1(x)=c−1

n>1n>1 时,设 B(x)B(x)A(x)A(x)xnxn 下的逆元,设 B(x)B′(x)A(x)A(x)xn2x⌊n2⌋ 下的逆元且已求出,则

A(x)B(x)1(modxn2),A(x)B(x)1(modxn2)A(x)B(x)≡1(modx⌊n2⌋),A(x)B′(x)≡1(modx⌊n2⌋)

两式相减,得
B(x)B(x)0(modxn2)B(x)−B′(x)≡0(modx⌊n2⌋)

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

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

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

模板:
#include<cstdio>
int main(){

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值