#P14199. [ICPC 2024 Hangzhou R] Make It Divisible

[ICPC 2024 Hangzhou R] Make It Divisible

Description

给定一个长度为 nn 的正整数序列 a1,a2,,ana_1, a_2, \cdots, a_n,我们称区间 [l,r][l, r]1lrn1 \le l \le r \le n)为一个可整除区间\textit{可整除区间},如果存在一个整数 dd 满足 ldrl \le d \le r,并且对所有 lirl \le i \le raia_i 都能被 ada_d 整除。我们称整个序列为可整除序列\textit{可整除序列},如果对于所有 1lrn1 \le l \le r \le n,区间 [l,r][l, r] 都是可整除区间。

现给定另一个长度为 nn 的序列 b1,b2,,bnb_1, b_2, \cdots, b_n 和一个整数 kk,请找出所有 1xk1 \le x \le k 的整数 xx,使得序列 b1+x,b2+x,,bn+xb_1 + x, b_2 + x, \cdots, b_n + x 是可整除序列。由于这样的整数可能很多,你只需要输出这样的 xx 的个数以及所有这样的 xx 的和。

Input Format

有多组测试数据。输入的第一行包含一个整数 TT1T5001 \le T \le 500),表示测试数据组数。对于每组测试数据:

第一行包含两个整数 nnkk1n5×1041 \le n \le 5 \times 10^41k1091 \le k \le 10^9)。

第二行包含 nn 个整数 b1,b2,,bnb_1, b_2, \cdots, b_n1bi1091 \le b_i \le 10^9)。

保证所有测试数据中 nn 的总和不超过 5×1045 \times 10^4

Output Format

对于每组测试数据,输出一行两个整数,用空格分隔,第一个数表示满足条件的 xx 的个数,第二个数表示所有满足条件的 xx 的和。

3
5 10
7 79 1 7 1
2 1000000000
1 2
1 100
1000000000
3 8
0 0
100 5050

Hint

对于第一个样例测试数据,x=1x = 1x=2x = 2x=5x = 5 是合法的。

对于第三个样例测试数据,所有的 1x1001 \le x \le 100 都是合法的。

由 ChatGPT 5 翻译