各类多项式操作的暴力递推法

本文深入讲解了多项式的基本运算,包括求逆、对数、指数、开方和求幂等高级操作,通过递推公式实现了在O(n^2)时间复杂度内的高效计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.一些约定.

对于接下来的所有操作,我们都是给出F(x)F(x)F(x),求G(x)=T(F(x))G(x)=T(F(x))G(x)=T(F(x)),其中T()T()T()是操作函数,我们的目标是在O(n2)O(n^{2})O(n2)的时间复杂度内完成所有操作.

多项式F(x),G(x)F(x),G(x)F(x),G(x)的系数分别为fi,gif_i,g_ifi,gi.


二.多项式求逆.

对于一个多项式F(x)F(x)F(x),我们要求G(x)G(x)G(x)满足F(x)G(x)=1F(x)G(x)=1F(x)G(x)=1.

那么有:
G(x)F(x)=1∑j=0igjfi−j=0gi=−1f0∑j=0i−1gjfi−j G(x)F(x)=1\\ \sum_{j=0}^{i}g_jf_{i-j}=0\\ g_i=-\frac{1}{f_0}\sum_{j=0}^{i-1}g_{j}f_{i-j} G(x)F(x)=1j=0igjfij=0gi=f01j=0i1gjfij

其中初项g0=1f0g_0=\frac{1}{f_0}g0=f01.


三.多项式ln.

对于一个常数项为000的多项式F(x)F(x)F(x),我们要求G(x)G(x)G(x)满足G(x)=ln⁡(1+F(x))G(x)=\ln (1+F(x))G(x)=ln(1+F(x)).

那么有:
G(x)=ln⁡(1+F(x))G′(x)=F′(x)1+F(x)G′(x)(1+F(x))=F′(x)G′(x)=F′(x)−G′(x)F(x)(i+1)gi+1=(i+1)fi+1−∑j=0i−1(j+1)gj+1fi−jgi+1=fi+1−1i+1∑j=0i−1(j+1)gj+1fi−jgi=fi−1i∑j=1i−1jgjfi−j G(x)=\ln(1+F(x))\\ G'(x)=\frac{F'(x)}{1+F(x)}\\ G'(x)(1+F(x))=F'(x)\\ G'(x)=F'(x)-G'(x)F(x)\\ (i+1)g_{i+1}=(i+1)f_{i+1}-\sum_{j=0}^{i-1}(j+1)g_{j+1}f_{i-j}\\ g_{i+1}=f_{i+1}-\frac{1}{i+1}\sum_{j=0}^{i-1}(j+1)g_{j+1}f_{i-j}\\ g_i=f_i-\frac{1}{i}\sum_{j=1}^{i-1}jg_{j}f_{i-j} G(x)=ln(1+F(x))G(x)=1+F(x)F(x)G(x)(1+F(x))=F(x)G(x)=F(x)G(x)F(x)(i+1)gi+1=(i+1)fi+1j=0i1(j+1)gj+1fijgi+1=fi+1i+11j=0i1(j+1)gj+1fijgi=fii1j=1i1jgjfij

其中初项g0=0g_0=0g0=0.


四.多项式exp.

对于一个常数项为000的多项式F(x)F(x)F(x),我们要求G(x)G(x)G(x)满足G(x)=eF(x)G(x)=e^{F(x)}G(x)=eF(x).

那么有:
G(x)=eF(x)G′(x)=eF(x)F′(x)G′(x)=F′(x)G(x)(i+1)gi+1=∑j=0i(j+1)fj+1gi−jgi+1=1i+1∑j=0i(j+1)fj+1gi−jgi=1i∑j=1ijfjgi−j G(x)=e^{F(x)}\\ G'(x)=e^{F(x)}F'(x)\\ G'(x)=F'(x)G(x)\\ (i+1)g_{i+1}=\sum_{j=0}^{i}(j+1)f_{j+1}g_{i-j}\\ g_{i+1}=\frac{1}{i+1}\sum_{j=0}^{i}(j+1)f_{j+1}g_{i-j}\\ g_{i}=\frac{1}{i}\sum_{j=1}^{i}jf_{j}g_{i-j} G(x)=eF(x)G(x)=eF(x)F(x)G(x)=F(x)G(x)(i+1)gi+1=j=0i(j+1)fj+1gijgi+1=i+11j=0i(j+1)fj+1gijgi=i1j=1ijfjgij

其中初项g0=1g_0=1g0=1.


五.多项式开方.

对于一个多项式F(x)F(x)F(x),我们要求G(x)G(x)G(x)满足G2(x)=F(x)G^{2}(x)=F(x)G2(x)=F(x).

那么有:
G2(x)=F(x)∑j=0igjgi−j=fi2g0gi=fi−∑j=1i−1gjgi−jgi=12g0(fi−∑j=1i−1gjgi−j) G^{2}(x)=F(x)\\ \sum_{j=0}^{i}g_{j}g_{i-j}=f_i\\ 2g_{0}g_{i}=f_i-\sum_{j=1}^{i-1}g_{j}g_{i-j}\\ g_i=\frac{1}{2g_0}\left(f_i-\sum_{j=1}^{i-1}g_{j}g_{i-j}\right) G2(x)=F(x)j=0igjgij=fi2g0gi=fij=1i1gjgijgi=2g01(fij=1i1gjgij)

其中初项g0=f0g_0=\sqrt{f_0}g0=f0.


六.多项式求幂.

对于一个多项式F(x)F(x)F(x),我们要求G(x)G(x)G(x)满足G(x)=Fk(x)G(x)=F^{k}(x)G(x)=Fk(x),其中kkk是一个常数.

那么有:
G(x)=Fk(x)G′(x)=kF′(x)Fk−1(x)G′(x)=kF′(x)G(x)F(x)G′(x)F(x)=kG(x)F′(x)∑j=0i(j+1)gj+1fi−j=k∑j=0igj(i−j+1)fi−j+1(i+1)f0gi+1=k∑j=0igj(i−j+1)fi−j+1−∑j=0i−1(j+1)gj+1fi−j(i+1)f0gi+1=k∑j=0i(i−j+1)gjfi−j+1−∑j=1ijgjfi−j+1(i+1)f0gi+1=k(i+1)g0fi+1+∑j=1igjfi−j+1(ki−kj+k−j)gi+1=1f0(kg0fi+1+1i+1∑j=1igjfi−j+1(ki−kj+k−j))gi=1f0(kg0fi+1i∑j=1i−1gjfi−j(ki−kj−j)) G(x)=F^{k}(x)\\ G'(x)=kF'(x)F^{k-1}(x)\\ G'(x)=kF'(x)\frac{G(x)}{F(x)}\\ G'(x)F(x)=kG(x)F'(x)\\ \sum_{j=0}^{i}(j+1)g_{j+1}f_{i-j}=k\sum_{j=0}^{i}g_{j}(i-j+1)f_{i-j+1}\\ (i+1)f_{0}g_{i+1}=k\sum_{j=0}^{i}g_{j}(i-j+1)f_{i-j+1}-\sum_{j=0}^{i-1}(j+1)g_{j+1}f_{i-j}\\ (i+1)f_{0}g_{i+1}=k\sum_{j=0}^{i}(i-j+1)g_{j}f_{i-j+1}-\sum_{j=1}^{i}jg_{j}f_{i-j+1}\\ (i+1)f_{0}g_{i+1}=k(i+1)g_0f_{i+1}+\sum_{j=1}^{i}g_{j}f_{i-j+1}(ki-kj+k-j)\\ g_{i+1}=\frac{1}{f_0}\left(kg_0f_{i+1}+\frac{1}{i+1}\sum_{j=1}^{i}g_jf_{i-j+1}(ki-kj+k-j)\right)\\ g_{i}=\frac{1}{f_0}\left(kg_0f_{i}+\frac{1}{i}\sum_{j=1}^{i-1}g_{j}f_{i-j}(ki-kj-j)\right) G(x)=Fk(x)G(x)=kF(x)Fk1(x)G(x)=kF(x)F(x)G(x)G(x)F(x)=kG(x)F(x)j=0i(j+1)gj+1fij=kj=0igj(ij+1)fij+1(i+1)f0gi+1=kj=0igj(ij+1)fij+1j=0i1(j+1)gj+1fij(i+1)f0gi+1=kj=0i(ij+1)gjfij+1j=1ijgjfij+1(i+1)f0gi+1=k(i+1)g0fi+1+j=1igjfij+1(kikj+kj)gi+1=f01(kg0fi+1+i+11j=1igjfij+1(kikj+kj))gi=f01(kg0fi+i1j=1i1gjfij(kikjj))

其中初项g0=f0kg_0=f_0^{k}g0=f0k.

对于f0=0f_0=0f0=0的情况,我们可以先把最后面的几个000去掉,算完之后再添加回去.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值