P14221 [ICPC 2024 Kunming I] 学而时习之
题目描述
给定长度为 $n$ 的正整数序列 $a_1, a_2, \cdots, a_n$ 以及一个非负整数 $k$,您可以执行以下操作至多一次:选择两个整数 $l$ 和 $r$ 满足 $1 \le l \le r \le n$,之后对于每个 $l \le i \le r$,将 $a_i$ 变为 $(a_i + k)$。
最大化整个序列的最大公因数。
称整数 $g$ 是整个序列的公因数,若对于所有 $1 \le i \le n$ 都满足 $a_i$ 能被 $g$ 整除。
输入格式
有多组测试数据。第一行输入一个整数 $T$ 表示测试数据组数。对于每组测试数据:
第一行输入两个整数 $n$ 和 $k$($1\leq n\leq 3 \times 10^5$,$0\leq k\leq 10^{18}$)。
第二行输入 $n$ 个整数 $a_1, a_2, \cdots, a_n$($1 \le a_i \le 10^{18}$)表示序列。
保证所有数据 $n$ 之和不超过 $3 \times 10^5$。
输出格式
每组数据输出一行一个整数,表示整个序列最大的最大公因数。
说明/提示
对于第一组样例数据,选择 $l = 2$ 以及 $r = 4$。序列会变为 $\{5, 5, 15, 10, 10, 555\}$。序列的最大公因数是 $5$。