[CTSC2010] 性能优化

题目描述

程序员小明正在开发一套大型软件,软件中有一段核心程序,用伪代码描述如下(假设所有变量初值均为 $0$,并且假定其中的数据类型均不会出现溢出): ~~~cpp Input a[0], a[1], ... , a[n - 1], b[0], b[1], ... , b[n - 1], C For i: 0 to n - 1 x[0, i] = a[i] For i: 0 to C - 1 For j: 0 to n - 1 For k: 0 to n - 1 x[i + 1, (j + k) mod n] = x[i + 1, (j + k) mod n] + b[k]x[i, j] Output x[C, 0] mod (n + 1), x[C, 1] mod (n + 1), ... , x[C, n - 1] mod (n + 1) ~~~ 但是,这段程序的效率非常低,它的时间复杂度高达 $\Theta(n^2C)$。他想让你帮忙优化一下这个程序,当然要求输出相同的结果。为了使问题更简单,他保证输入的 $n$ 能表示成若干个不超过 $10$ 的正整数的乘积,并且 $n + 1$ 是质数。

输入输出格式

输入格式


规范起见,以下将下标统一写到数组名称的右下角。例如: $a_1$ 对应伪代码中的 `a[1]`,$x_{C, 0}$ 对应伪代码中的 `x[C, 0]`。 输入的第一行包含两个非负整数 $n, C$。 接下来一行包含 $n$ 个非负整数 $a_0, a_1, \cdots , a_{n - 1}$。 接下来一行包含 $n$ 个非负整数 $b_0, b_1, \cdots , b_{n - 1}$。

输出格式


输出包含 $n$ 行,每行包含一个数。第 $i$ 行为 $x_{C, i}\bmod (n + 1)$ 的值。你需要保证输出的数在 $0 \sim n$ 之间。

输入输出样例

输入样例 #1

4 1
1 2 3 4
4 3 3 1

输出样例 #1

2
1
0
2

说明

总共 $10$ 个测试点,数据范围满足: | 测试点 | $n$ | $C$ | | :----: | :------------------: | :---------: | | 1 | $\leq 100$ | $\leq 100$ | | 2 | $\leq 100$ | $\leq 10^9$ | | 3 | $\leq 700$ | $\leq 10^9$ | | 4 | $\leq 700$ | $\leq 10^9$ | | 5 | $\leq 10^4$ | $ = 1$ | | 6 | $\leq 10^5$ | $= 1$ | | 7 | $\leq 10^5$ | $= 1$ | | 8 | $\leq 5 \times 10^5$ | $\leq 10^9$ | | 9 | $\leq 5 \times 10^5$ | $\leq 10^9$ | | 10 | $\leq 5 \times 10^5$ | $\leq 10^9$ | 在所有输入数据中,$a_i$ 和 $b_i$ 均不超过 $10^9$。