题目背景
一个简单的问题,什么是递推?
题目描述
定义一个数列 {a0…an−1} 的递推式为满足下式的序列 {r0…rm}:
$$\sum_{j = 0} ^ m r_j a_{i - j} = 0, \forall i \ge m
$$
m 称为该递推式的阶数。特别地,r0=0。
给你一个无限长的数列 {ai} 的前 n 项以及数列 {ai} 的一个阶数为 n 的递推式 {bi}。
要求求出数列 {ai} 的所有项之和。答案对 998244353 取模。
可以证明,对于任意一个模 998244353 意义下输入,都存在实数意义下的一个对应数列的答案是收敛的。
输入格式
第一行一个正整数 n。
第二行输入 n 个整数,表示序列 {ai} 的前 n 项即 {a0…an−1} 在模 998244353 意义下的值。
第三行输入 n+1 个整数,表示递推式 {b0…bn} 在模 998244353 意义下的值。
输出格式
输出一行一个整数,表示数列 {ai} 的所有项之和对 998244353 取模的结果。
保证答案可以在模 998244353 意义下表示,即如果最终的答案为最简分数 pq(可以证明答案肯定是一个有理数),保证 p≡0(mod998244353)。
1
1
1 499122176
2
2
1 1
1 199648870 99824435
14
1
1
1 499122177
665496236
提示
样例解释 #1
499122176≡−21(mod998244353)。
∀i≥n,ai−21×ai−1=0 即 ai=21×ai−1,即数列 {ai} 是等比数列 1,21,41,…。其和收敛于 2。
样例解释 #2
$199648870\equiv -0.6\pmod {998244353},99824435\equiv -0.3\pmod {998244353}$。
$\forall i\ge n,a_i-0.6\times a_{i-1}-0.3\times a_{i-2}=0$ 即 ai=0.6×ai−1+0.3×ai−2。经计算,其和收敛于 14。
本题使用子任务捆绑/依赖
对于所有子任务,1≤n≤5×103, 0≤ai,bi<998244353。特别地,b0=0。
子任务编号 |
分值 |
n≤ |
依赖 |
1 |
30 |
1 |
无 |
2 |
2 |
1 |
3 |
40 |
5×103 |
1,2 |