P40062

学而时习之

难度 5 级 最大公因数 辗转相除法 前缀和
讨论 统计 1通过 3提交 33.3%通过率 旧版界面
时间限制 1 秒 内存限制 128 MB

题目描述

给定长度为 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 \le n \le 3 \times 10^5,0 \le k \le 10^{18})。
  • 第二行输入 n 个整数 a_1, a_2, \cdots, a_n(1 \le a_i \le 10^{18})表示序列。

保证所有数据 n 之和不超过 3 \times 10^5。

输出

每组数据输出一行一个整数,表示整个序列最大的最大公因数。

样例

样例 1
输入
2
6 2
5 3 13 8 10 555
3 0
3 6 9
输出
5
3
Tab 缩进 · 提交后可在下方查看评测状态
请先登录后再提交