#P16646. [GKS 2018 #C] Kickstart Alarm

[GKS 2018 #C] Kickstart Alarm

题目描述

Shil 每天早上起床都非常困难,因此他决定买一个功能强大的闹钟来 Kickstart 他的一天。这个闹钟被称为 Kickstart Alarm。它预配置了 KK 个强有力的唤醒呼叫。在睡觉前,用户用参数数组 A1,A2,,ANA_1, A_2, \dots, A_N 对闹钟进行编程。早上,闹钟会响 KK 次,第 ii 次唤醒呼叫的强度为 POWERi\text{POWER}_i

为了计算 POWERi\text{POWER}_i,闹钟会生成参数数组的所有连续子数组,并计算所有连续子数组的第 ii 次指数幂之和。子数组 Aj,Aj+1,,AkA_j, A_{j+1}, \dots, A_k 的第 ii 次指数幂定义为 $A_j \times 1^i + A_{j+1} \times 2^i + A_{j+2} \times 3^i + \dots + A_k \times (k - j + 1)^i$。因此,POWERi\text{POWER}_i 就是参数数组所有连续子数组的第 ii 次指数幂之和。

例如,若 i=2i = 2,且 A=[1,4,2]A = [1, 4, 2],则第 ii 次指数幂的计算如下:

  • [1][1] 的第 2 次指数幂 =1×12=1= 1 \times 1^2 = 1
  • [4][4] 的第 2 次指数幂 =4×12=4= 4 \times 1^2 = 4
  • [2][2] 的第 2 次指数幂 =2×12=2= 2 \times 1^2 = 2
  • [1,4][1, 4] 的第 2 次指数幂 =1×12+4×22=17= 1 \times 1^2 + 4 \times 2^2 = 17
  • [4,2][4, 2] 的第 2 次指数幂 =4×12+2×22=12= 4 \times 1^2 + 2 \times 2^2 = 12
  • [1,4,2][1, 4, 2] 的第 2 次指数幂 =1×12+4×22+2×32=35= 1 \times 1^2 + 4 \times 2^2 + 2 \times 3^2 = 35

总和为 7171

今晚,Shil 第一次使用他的 Kickstart Alarm。因此,他非常担心闹钟早上可能发出的声音。它可能会吵醒邻居,甚至更糟,可能会吵醒整个星球!然而,对他来说计算每次唤醒呼叫的强度相当困难。给定 KK 和参数数组 A1,A2,,ANA_1, A_2, \dots, A_N,你能通过计算每次唤醒呼叫的强度之和 $\text{POWER}_1 + \text{POWER}_2 + \dots + \text{POWER}_K$ 来帮助他吗?

输入格式

输入的第一行给出测试用例的数量 TT。接下来有 TT 个测试用例。每个测试用例由一行九个整数组成:NNKKx1x_1y1y_1CCDDE1E_1E2E_2FF。其中 NN 是数组 AA 的长度,KK 是唤醒呼叫的次数。其余的值是用于生成数组 AA 元素的参数,生成方式如下。

对于 i=2i = 2NN,使用以下递推式生成 xix_iyiy_i

  • $x_i = (C \times x_{i-1} + D \times y_{i-1} + E_1) \bmod F$。
  • $y_i = (D \times x_{i-1} + C \times y_{i-1} + E_2) \bmod F$。

对于所有 i=1i = 1NN,定义 Ai=(xi+yi)modFA_i = (x_i + y_i) \bmod F

输出格式

对于每个测试用例,输出一行,格式为 Case #x: POWER,其中 xx 是测试用例编号(从 11 开始),POWER 是对于 i=1i = 1KKPOWERi\text{POWER}_i 之和。由于 POWER 可能非常大,请输出它对 10000000071000000007(即 109+710^9 + 7)取模的结果。

2
2 3 1 2 1 2 1 1 9
10 10 10001 10002 10003 10004
10005 10006 89273
Case #1: 52
Case #2: 739786670

提示

在样例 #1 中,参数数组为 [3,2][3, 2]。所有连续子数组为 [3][3][2][2][3,2][3, 2]

对于 i=1i = 1

  • [3][3] 的第 1 次指数幂 =3×11=3= 3 \times 1^1 = 3
  • [2][2] 的第 1 次指数幂 =2×11=2= 2 \times 1^1 = 2
  • [3,2][3, 2] 的第 1 次指数幂 =3+2×21=7= 3 + 2 \times 2^1 = 7

所以 POWER1=12\text{POWER}_1 = 12

对于 i=2i = 2

  • [3][3] 的第 2 次指数幂 =3×12=3= 3 \times 1^2 = 3
  • [2][2] 的第 2 次指数幂 =2×12=2= 2 \times 1^2 = 2
  • [3,2][3, 2] 的第 2 次指数幂 =3+2×22=11= 3 + 2 \times 2^2 = 11

所以 POWER2=16\text{POWER}_2 = 16

对于 i=3i = 3

  • [3][3] 的第 3 次指数幂 =3×13=3= 3 \times 1^3 = 3
  • [2][2] 的第 3 次指数幂 =2×13=2= 2 \times 1^3 = 2
  • [3,2][3, 2] 的第 3 次指数幂 =3+2×23=19= 3 + 2 \times 2^3 = 19

所以 POWER3=24\text{POWER}_3 = 24

限制条件

1T1001 \le T \le 100

1x11051 \le x_1 \le 10^5

1y11051 \le y_1 \le 10^5

1C1051 \le C \le 10^5

1D1051 \le D \le 10^5

1E11051 \le E_1 \le 10^5

1E21051 \le E_2 \le 10^5

1F1051 \le F \le 10^5

小数据集(测试集 1 – 可见)

1N1001 \le N \le 100

1K201 \le K \le 20

大数据集(测试集 2 – 隐藏)

1N1061 \le N \le 10^6

1K1041 \le K \le 10^4

翻译由 DeepSeek V4 Pro 完成