CF1909B Make Almost Equal With Mod

题目描述

你有一个由互不相同的正整数组成的数组 $a_1, a_2, \dots, a_n$。你需要恰好进行一次如下操作: - 选择一个正整数 $k$; - 对于每个 $i$ 从 $1$ 到 $n$,将 $a_i$ 替换为 $a_i \bmod k^\dagger$。 请你找到一个 $k$,使得 $1 \leq k \leq 10^{18}$,并且操作后数组 $a_1, a_2, \dots, a_n$ 恰好包含 $2$ 个不同的值。可以证明,在本题的约束下,至少存在一个这样的 $k$。如果有多个解,你可以输出任意一个。 $^\dagger$ $a \bmod b$ 表示 $a$ 除以 $b$ 的余数。例如: - $7 \bmod 3 = 1$,因为 $7 = 3 \cdot 2 + 1$; - $15 \bmod 4 = 3$,因为 $15 = 4 \cdot 3 + 3$; - $21 \bmod 1 = 0$,因为 $21 = 21 \cdot 1 + 0$。

输入格式

每组测试数据包含多组测试用例。第一行包含测试用例个数 $t$($1 \le t \le 500$)。每组测试用例描述如下。 每个测试用例的第一行包含一个整数 $n$($2 \le n \le 100$),表示数组 $a$ 的长度。 第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_i \le 10^{17}$),表示数组的初始状态。保证所有 $a_i$ 互不相同。 注意所有测试用例的 $n$ 之和没有额外限制。

输出格式

对于每个测试用例,输出一个整数:一个满足条件的 $k$($1 \leq k \leq 10^{18}$),使得操作后数组 $a_1, a_2, \dots, a_n$ 恰好包含 $2$ 个不同的值。

说明/提示

在第一个测试用例中,你可以选择 $k = 7$。数组变为 $[8 \bmod 7, 15 \bmod 7, 22 \bmod 7, 30 \bmod 7] = [1, 1, 1, 2]$,包含恰好 $2$ 个不同的值($\{1, 2\}$)。 在第二个测试用例中,你可以选择 $k = 30$。数组变为 $[0, 0, 8, 0, 8]$,包含恰好 $2$ 个不同的值($\{0, 8\}$)。注意选择 $k = 10$ 也是一个有效解。 在最后一个测试用例中,你可以选择 $k = 10^{18}$。数组变为 $[2, 1]$,包含恰好 $2$ 个不同的值($\{1, 2\}$)。注意选择 $k = 10^{18} + 1$ 不合法,因为必须满足 $1 \leq k \leq 10^{18}$。 由 ChatGPT 4.1 翻译