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 翻译