P11617 递推

Posted on 2025-04-18 23:16  K_J_M  阅读(33)  评论(0)    收藏  举报

题目大意

定义一个数列 \(\{a_0 \dots a_{n - 1} \}\) 的递推式为满足下式的序列 \(\{r_0\dots r_m\}\)

\[\sum_{j = 0} ^ m r_j a_{i - j} = 0, \forall i \ge m \]

\(m\) 称为该递推式的阶数。特别地,\(r_0\neq 0\)

给你一个无限长的数列 \(\{a_i\}\) 的前 \(n\) 项以及数列 \(\{a_i\}\) 的一个阶数为 \(n\) 的递推式 \(\{b_i\}\)

要求求出数列 \(\{a_i\}\) 的所有项之和。答案对 \(998244353\) 取模。

Solution

既然题目让我们求出 \(\{a_i\}\) 的所有项之和,提示我们肯定是有公式的,下面开始推式子。

首先看 \(n=1\) 时,我们有 \(b_0a_{i}+b_1a_{i-1}=0\),于是 \(a_i=-\frac{b_1}{b_0} a_{i-1}\),这是一个等比数列,直接用等比数列求和公式即可,这样有30pts,下面考虑通解。

对于条件,我们有

\[b_0a_{n}+b_1a_{n-1}+ \dots +b_na_0=0 \]

也就是

\[a_n=-\frac{\sum_{j=1}^{n}b_ja_{n-j}}{b_0} \]

我们记

\[f_i=\sum_{j=1}^{n}b_ja_{i-j} \]

那么

\[a_i=-\frac{f_i}{b_0} \]

我们写出 \(f_n,f_{n+1} \dots\)

\[f_n=b_1a_{n-1}+b_2a_{n-2}+\dots b_na_0 \]

\[f_{n+1}=b_1a_{n}+b_2a_{n-1}+\dots b_na_1 \]

\[f_{n+2}=b_1a_{n+1}+b_2a_{n}+\dots b_na_2 \]

\[\dots \]

将上面左边与右边累加即可得到

\[\sum_{i=n}^{+∞}f_{i}=b_1\sum_{j=n-1}^{+∞}a_j + b_2\sum_{j=n-2}^{+∞}a_j + \dots +b_n\sum_{j=0}^{+∞}a_j \]

注意到右边的关于 \(a\) 的和式有很多重复的部分,我们将 \(\sum_{j=n}^{+∞}a_j\) 记做 \(S\)。那么右边为

\[b_1(a_{n-1}+S)+b_2(a_{n-2}+a_{n-1}+S)+\dots +b_n(a_0+\dots +b{n-1}+S) \]

我们再记

\[g_i=\sum_{j=0}^{i}a_j \]

那么右边等于

\[b_1(g_{n-1}-g_{n-2}+S) \]

\[+b_2(g_{n-1}-g_{n-3}+S) \]

\[+b_3(g_{n-1}-g_{n-4}+S) \]

\[\dots \]

\[+b_n(g_{n-1}-0+S) \]

展开合并可以得到

\[(g_{n-1}+S)\sum_{j=1}^{n}b_j-\sum_{j=1}^{n}b_jg_{n-1-j} \]

我们记

\[\sum_{j=1}^{n}b_j=C_1 \]

\[\sum_{j=1}^{n}b_jg_{n-1-j}=C_2 \]

注意这两个都是常数,那么我们的右边就等于

\[(g_{n-1}+S)C_1-C_2 \]

由于我们有

\[a_i=-\frac{f_i}{b_0} \]

而我们的左边为

\[\sum_{i=n}^{+∞}f_{i}=-b_0\sum_{i=n}^{+∞}a_i=-b_0(g_{n-1}+S) \]

由于左边等于右边,所以

\[-b_0(g_{n-1}+S)=(g_{n-1}+S)C_1-C_2 \]

而我们所要求的答案为

\[Ans=g_{n-1}+S \]

所以

\[-b_0Ans=C_1Ans-C_2 \]

\[(C_1+b_0)Ans=C_2 \]

\[Ans=\frac{C_2}{C_1+b_0} \]

这样用费马小定理求解逆元就可以了。
Ac Code