[模板] 多项式全家桶

注意:以下所有说明均以帮助理解模板为目的,不保证正确性。

多项式求逆

已知$A(x)$,求满足$A(x)B(x)=1\ (mod\ x^n)$的B(以下为了方便假设n是2的幂)

考虑倍增,假设已经求出$A(x)B_0(x)=1\ (mod\ x^{n/2})$

$$A(x)(B(x)-B_0(x))=0\ (mod\ x^{n/2})$$

$$(B(x)-B_0(x))=0\ (mod\ x^{n/2})$$

$$(B(x)-B_0(x))^2=0\ (mod\ x^n)$$

$$B^2(x)-2B(x)B_0(x)+B_0^2(x)=0\ (mod\ x^n)$$

同乘个A,$$B(x)-2B_0(x)+A(x)B_0^2(x)=0\ (mod\ x^n)$$

$$B(x)=2B_0(x)-A(x)B_0^2(x)\ (mod\ x^n)$$

复杂度$T(n)=T(n/2)+O(nlogn)=O(nlogn)$

多项式除法

已知$A(x)$,$B(x)$,求满足$A(x)=R(x)B(x)+Q(x)$的$R(x)$,$Q(x)$,其中若A为n次,B为m次,则R为n-m次,Q为m-1次

首先考虑一种操作:把$F(x)$变成$x^nF(\frac{1}{x})$,等价于把F(x)的系数翻转,记做$F_R(x)$

于是有$$x^nA(x)=x^{n-m}R(x)x^{m}B(x)+x^{n-m+1}x^{m-1}Q(x)$$

$$A_R(x)=R_R(x)B_R(x)+x^{n-m+1}Q_R(x)$$

把它放到$mod\ x^{n-m+1}$下,可以发现$Q(x)$消失了,而且对$R(x)$没有影响

于是有$R_R(x)=\frac{A_R(x)}{B_R(x)}\ (mod\ x^{n-m+1})$

所以$R(x)$就可以求了,然后$Q(x)=A(x)-R(x)B(x)$,也可以求了

复杂度$O(nlogn)$

牛顿迭代法

已知$G(f)$,求$G(F(x))=0\ (mod\ x^n)$的一个解$F(x)$(以下为了方便假设n是2的幂)

假设已经求出了$G(F_0(x))=0\ (mod\ x^{n/2})$

我们在$F_0(x)$处对$G$进行泰勒展开,有

$$G(F(x))=G(F_0(x))+\frac{G^{(1)}(F_0(x))}{1!}(F(x)-F_0(x))+\frac{G^{(2)}(F_0(x))}{2!}(F(x)-F_0(x))^2+... (mod\ x^n)$$

然后我们发现,因为F_0和F前n/2项相同,所以$(F(x)-F_0(x))^2=0\ (mod\ x^n)$

所以有$$G(F(x))=G(F_0(x))+G‘(F_0(x))(F(x)-F_0(x))=0\ (mod\ x^n)$$

$$F(x)=F_0(x)-\frac{G(F_0(x))}{G‘(F_0(x))}\ (mod\ x^n)$$

于是就可以倍增来求F(x)了

多项式开根

已知$G(H(x))=H^2(x)-F(x)$,求使$G(H(x))=0\ (mod\ x^n)$的一个解

根据上面牛顿迭代法的式子可得$H(x)=\frac{H_0^2(x)+F(x)}{2H_0(x)}\ (mod\ x^n)$,倍增即可

复杂度$T(n)=T(n/2)+O(nlogn)=O(nlogn)$

原文地址:https://www.cnblogs.com/Ressed/p/11161918.html

时间: 2024-08-30 04:36:16

[模板] 多项式全家桶的相关文章

【知识总结】多项式全家桶(一)(NTT、加减乘除和求逆)

我这种数学一窍不通的菜鸡终于开始学多项式全家桶了-- 必须要会的前置技能:FFT(不会?戳我:[知识总结]快速傅里叶变换(FFT)) 一.NTT 跟FFT功能差不多,只是把复数域变成了模域(计算复数系数多项式相乘变成计算在模意义下整数系数多项式相乘).你看FFT里的单位圆是循环的,模一个质数也是循环的嘛qwq.\(n\)次单位根\(w_n\)怎么搞?看这里:[BZOJ3328]PYXFIB(数学)(内含相关证明.只看与原根和单位根相关的内容即可.) 注意裸的NTT要求模数\(p\)存在原根并且\

【知识总结】多项式全家桶(四)(快速幂和开根)

上一篇:[知识总结]多项式全家桶(三)(任意模数NTT) 推荐小恐龙的博客(参考资料):多项式开根 (本文中一切多项式运算默认在模 \(x_n\) 意义下进行) 一.快速幂 多项式快速幂?首先有一种很显然的方式是把整数快速幂里面的整数乘法替换成多项式乘法 NTT ,复杂度 \(O(n\log^2n)\) . 然而还有一种 \(O(n\log n)\) 的做法:要求 \(B=A^k\) ,相当于求 \(\log_A B=k\) ,用换底公式得 \(\log_A B=\frac{\ln B}{\ln

多项式全家桶

Include 多项式乘法 多项式求逆 多项式除法 多项式取模 多项式对数函数 多项式指数函数 多项式正弦函数 多项式余弦函数 #include<bits/stdc++.h> #define reg register int #define il inline #define fi first #define se second #define mk(a,b) make_pair(a,b) #define numb (ch^'0') using namespace std; typedef l

[算法学习] 多项式全家桶

多项式 一个\(n\)次多项式可以表示为\(A(x)=\sum_{i=0}^{n}a_i x^i\),另一个\(n\)次多项式可以表示为\(B(x)=\sum_{i=0}^{n}b_i x^i\). 多项式加法 将\(A(x)\)和\(B(x)\)相加,得到多项式\(C(x)=\sum_{i=0}^{n} (a_i+b_i) x^i\). 复杂度是\(O(n)\)的. 多项式乘法 将\(A(x)\)和\(B(x)\)相乘,得到多项式\(C(x)=\sum_{i=0}^{n}\sum_{j=0}^

[转]vue全面介绍--全家桶、项目实例

慢慢了解vue及其全家桶的过程 原文http://blog.csdn.net/zhenghao35791/article/details/67639415 简介 “简单却不失优雅,小巧而不乏大匠”. 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angular.js和React.js的优点,并剔除了它们的缺点”.授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You). Vue.js 是一个J

vue全面介绍--全家桶、项目实例

简介 "简单却不失优雅,小巧而不乏大匠". 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,"vue.js兼具angular.js和react.js的优点,并剔除了它们的缺点".授予了这么高的评价的vue.js,也是开源世界华人的骄傲,因为它的作者是位中国人–尤雨溪(Evan You). Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架.它是以数据驱动和组件化的思想构建的,采用自底向上增量开发的设计.

前端工程师晋升课程 Vue全家桶+SSR+Koa2全栈开发美团网

第1章 课程导学这门课主讲以Vue SSR+Koa2全栈技术为目标,最终实现美团网项目.本章节旨在告诉大家我们会用到哪些技能.教学方法.课程内容分布.学习方法等.备注:我们会涉及Vue2.5.Nuxt.Koa2.element-ui.Mongodb等 1-1 课程导学第2章 Vue基础知识整个SSR部分都是用的Vue框架,需要给初级用户讲解Vue的基础语法,不会让他们在学习实战的时候感到迷茫,这个章节会通过vue-cli搭建一个简单的demo,让大家快速的掌握Vue的基础应用,即使他没有学习过.

开发微信全家桶项目 Vue Node MongoDB高级技术栈全覆盖

开发微信全家桶项目 Vue Node MongoDB高级技术栈全覆盖链接:https://pan.baidu.com/s/15-9Ne3vFEFPzJA0wyltxrg 提取码:加Q:1642261812 V信:SH66668888QH 获取 第1章 本地与服务器环境准备介绍微信公众号/小程序/域名/服务器的申请选购流程,在本地与线上服务器分别对项目的运行环境进行搭建部署,如 Node.js/Vue/Yarn/PM2/Nginx/MongoDB 等等,同时会来简单介绍下从本地通过 PM2 利用

mac设计师系列 Adobe “全家桶” 15款设计软件 值得收藏!

文章素材来源:风云社区.简书 文章收录于:风云社区 www.scoee.com,提供1700多款mac软件下载 Adobe Creative Cloud 全线产品均可开放下载(简称Adobe CC 全家桶),Adobe Creative Cloud 为多国语言版本,支持:中文,英文,韩文,日本等多国语言, 在安装的时候可以选择自己需要的语言安装. 下面,给大家简单介绍一下adobe全家桶. 1.Photoshop Adobe Photoshop,简称“PS”,是一个由Adobe Systems开