QOJ.ac

QOJ

Time Limit: 3 s Memory Limit: 512 MB Total points: 100

# 7870. 童话

Statistics

童话只美在真实却从不续写。

泠珞最近学习了前缀和算法,她写出了以下程序:

read(n),read(a);
for(int i=0;i<=n;i++)read(f[i]);
for(int t=1;t<=n;t++){
    for(int i=1;i<=n;i++)f[i]=f[i]+a*f[i-1];
    ans[t]=f[t];
}

她发现这个程序在 $ n $ 比较大的时候会运行超时,请你帮忙写一个程序帮她计算出 $ \text{ans}_1,\text{ans}_2,\cdots,\text{ans}_n $,由于答案数值过大,你只需告诉她每个数除以 $ 998244353 $ 的余数。

输入格式

第一行两个正整数 $ n,a $。

接下来一行 $ n+1 $ 个非负整数,表示 $ f_0,f_1,\cdots,f_n $。

输出格式

$ n $ 个非负整数,表示 $ \text{ans}_1,\text{ans}_2,\cdots,\text{ans}_n $。

样例

样例 #1:

输入:

2 1
1 2 0

输出:

3 7

样例 #2:

输入:

10 10
5 9 7 8 0 6 3 2 4 10 1

输出:

59 1687 55618 1937320 69557006 549579657 621247830 250099579 483510144 968467040

数据范围与约定

对于 $ 100\% $ 的数据,保证 $ 2\leqslant n\leqslant 10^6,0\leqslant f_i<998244353,1\leqslant a<998244353 $。

子任务编号$ n\leqslant $特殊性质分值
$ 1 $$ 2000 $$ 5 $
$ 2 $$ 10^5 $A$ 5 $
$ 3 $$ 10^5 $BC$ 5 $
$ 4 $$ 10^5 $BD$ 10 $
$ 5 $$ 10^5 $C$ 10 $
$ 6 $$ 5\times10^4 $$ 10 $
$ 7 $$ 10^5 $$ 10 $
$ 8 $$ 2\times 10^5 $$ 15 $
$ 9 $$ 5\times 10^5 $$ 15 $
$ 10 $$ 10^6 $$ 15 $

特殊性质 A:保证 $ f_i\ne 0 $ 的 $ i $ 数量不超过 $ 100 $。

特殊性质 B:保证 $ a=1 $。

特殊性质 C:保证对于所有 $ i\in[0,n] $,都满足 $ f_i=1 $。

特殊性质 D:保证对于所有 $ i\in[0,n] $,都满足 $ f_i={i+2\choose 2}=\frac{(i+2)(i+1)}{2} $。