写在前面的话

碍于笔者水平有限,本文缺陷可能比较多,欢迎指正。

前置知识:NTT。

模板

\(\text{Link}\)

给定 \(f_1,f_2,f_3\dots f_k\)\(a_0,a_1,a_2\dots a_{k-1}\),求

\[a_n=\sum_{i=1}^kf_ia_{n-i} \]

\(998244353\) 取模之后的值。

考虑到上面这个式子和卷积很像,所以我们先想办法将其化为卷积形式。

不妨令 \(f_0=0\),对于所有 \(i \geq k+1\)\(f_i=0\)

将上面的式子写为

\[a_n=\sum_{i=0}^n f_ia_{n-i} \]

变为了一个卷积的形式。

\(A(x)=\sum_{i=0}^{∞} a_i x^i\)\(F(x)=\sum_{i=0}^{∞} f_ix^i\)

将上面的卷积式子写为 \(A(x)=A(x)F(x)\)

当然,你会发现其实上面的式子只有在 \(n \geq k\) 时才成立,所以 \(A(x)\)\(A(x)F(x)\) 的后 \(k-1\) 项系数可能不同。为了强制使其成立,将式子写为 \(A(x)=A(x)F(x)+P(x)\)

其中 \(P(x)=\sum_{i=0}^{k-1}p_ix^i\)

考虑到 \(A\)\(k\) 项已知,\(P\) 最多 \(k\) 项。

所以在已知 \(F\) 的情况下可以求出 \(P\)

\[A(x)=A(x)F(x)+P(x) \]

\[A(x)(1-F(x))=P(x) \]

直接求出 \(P(x)\)

\[A(x)=\dfrac{P(x)}{1-F(x)} \]

\(Q(x)=1-F(x)\)

答案就是 \(\dfrac{P(x)}{Q(x)}[x^n]\),考虑怎么求解。

首先将式子分子分母同乘 \(Q(-x)\),不难发现分母将只会剩下偶次项,令 \(Q_0(x^2)=Q(x)Q(-x)\)\(P_0(x)=P(x)Q(-x)\)

如果你熟悉多项式求逆的过程,就可以发现 \(Q_0(x^2)\) 的逆一定也是一个只含偶次项的多项式。

那么 \(P_0(x)\) 的偶次项乘上 \(Q_0(x^2)\) 的逆之后仍为偶次项,奇数同理。

\(P_1(x^2)\) 表示 \(P_0(x)\) 的偶次项,\(xP_2(x^2)\) 表示 \(P_0(x)\) 的奇次项。

\[\dfrac{P_0(x)}{Q_0(x^2)}=\dfrac{P_1(x^2)}{Q_0(x^2)}+\dfrac{xP_2(x^2)}{Q_0(x^2)} \]

既然现在这个式子奇偶项互不影响,那么如果 \(n\) 为偶数,就递归求解 \(\dfrac{P_1(x^2)}{Q_0(x^2)}\),否则求解 \(\dfrac{xP_2(x^2)}{Q_0(x^2)}\)

显然会求解 \(\log_2 n\) 次,所以总复杂度为 \(O(k \log_2 k \log_2 n)\)

原文地址:http://www.cnblogs.com/YccQwQ/p/16848301.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性