多项式算法6:分治 FFT

前置知识:
FFT
NTT
多项式求逆

分治FFT

分治FFT主要是求解以下问题:

给定序列 g 1 ⋯ g n − 1 g_{1} \cdots g_{n-1} g1gn1,求序列 f 0 ⋯ f n − 1 。 f_{0} \cdots f_{n-1}。 f0fn1
其中 f i = ∑ j = 1 i f i − j g j f_{i}= \sum_{j=1}^{i}f_{i-j}g_{j} fi=j=1ifijgj,边界为 f 0 = 1 f_{0} = 1 f0=1(边界不一定为1,看题目要求)。

模板题在此。
我们主要有两种求解方法,一种是用生成函数构造然后用多项式求逆的方法求解,另一种是CDQ分治法。

第一种解法(多项式求逆)

我们先设 g 0 = 0 g_0=0 g0=0,然后构造生成函数得: F ( x ) = ∑ i = 0 ∞ f i x i F(x)=\sum^{\infin}_{i=0}f_i x^i F(x)=i=0fixi G ( x ) = ∑ i = 0 ∞ g i x i G(x)=\sum^{\infin}_{i=0}g_i x^i G(x)=i=0gixi相乘得: F ( x ) × G ( x ) = ∑ i = 0 ∞ ∑ j = 0 ∞ f i × g j × x i + j F(x) \times G(x) = \sum^{\infin}_{i=0} \sum^{\infin}_{j=0} f_i \times g_j \times x^{i+j} F(x)×G(x)=i=0j=0fi×gj×xi+j k = i + j k=i+j k=i+j,可得: F ( x ) × G ( x ) = ∑ k = 0 ∞ ( ∑ j = 0 k f k − j × g j ) x k F(x) \times G(x) = \sum^{\infin}_{k=0}( \sum^{k}_{j=0} f_{k-j} \times g_{j}) x^k F(x)×G(x)=k=0(j=0kfkj</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值