B. 通过取模使数组几乎相等
每次测试时间限制:1 秒
每次测试内存限制:256 兆字节
你有一个由 不同 的正整数组成的数组 a1,a2,…,an。你需要恰好执行一次以下操作:
- 选择一个正整数 k;
- 对于每个 i 从 1 到 n,将 ai 替换为 aimodk†。
找到一个 k 的值,使得 1≤k≤1018,并且在操作结束后,数组 a1,a2,…,an 恰好包含 2 个不同的值。可以证明,在题目的限制条件下,至少存在一个这样的 k。如果有多个解,你可以输出其中任意一个。
† amodb 表示 a 除以 b 后的余数。例如:
7mod3=1,因为 7=3⋅2+1;
15mod4=3,因为 15=4⋅3+3;
21mod1=0,因为 21=21⋅1+0。
输入
每个测试点包含多个测试用例。第一行包含一个整数 t(1≤t≤500)——测试用例的数量。接下来是每个测试用例的描述。
每个测试用例的第一行包含一个整数 n(2≤n≤100)——数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤1017)——数组的初始状态。保证所有的 ai 互不相同。
注意,所有测试用例的 n 之和没有额外的限制。
输出
对于每个测试用例,输出一个整数:一个满足条件的 k 值(1≤k≤1018),使得操作后的数组恰好包含 2 个不同的值。
示例
输入:
5
4
8 15 22 30
5
60 90 98 120 308
6
328 769 541 986 215 734
5
1000 2000 7000 11000 16000
2
2 1
输出:
7
30
3
5000
1000000000000000000
说明
在第一个测试用例中,可以选择 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=1018。数组变为 [2,1],恰好包含 2 个不同的值({1,2})。注意选择 k=1018+1 是无效的,因为必须满足 1≤k≤1018。