P4191 [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$ 是质数。

输入格式

输出格式

说明/提示

总共 $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$。