#P1175. 虚张声势

虚张声势

题目描述

听说摆一个同时有 ∑\sum 和 ∏\prod 的式子可以吓跑 99% 的人。

给定一个长为 nn 的序列 {ai}\{a_i\} 和两个整数 k,mk,m。

求所有长度不超过 kk 的子段的元素乘积之和。答案对 mm 取模。换言之,求

$$\left( \sum_{l=1}^{n} \sum_{r=l}^{\min(l+k-1,n)} \prod_{i=l}^r a_i \right) \bmod m$$

输入格式

第一行一个整数 TT,表示数据组数。

接下来 TT 组数据,每组第一行三个整数 n,k,mn,k,m。

接下来一行 nn 个整数,第 ii 个代表 aia_i。

输出格式

共 TT 行,每行一个整数,表示答案对 mm 取模的值。

3
5 3 7
1 2 3 4 5
1 1 45
9
5 1 4
1 9 1 9 8
5
9
0

数据范围

  • 对于 30%30\% 的数据,1≤T≤4001 \le T \le 400,1≤n≤5001 \le n \le 500;
  • 对于 60%60\% 的数据,m=2m = 2;
  • 对于 100%100\% 的数据,1≤T≤2⋅1051 \le T \le 2 \cdot 10^5,1≤n,∑n≤2⋅1051 \le n, \sum n \le 2 \cdot 10^5,0≤ai≤1090 \le a_i \le 10^9,2≤m≤1092 \le m \le 10^9。