B. Make Almost Equal With Mod

time limit per test

1 second

memory limit per test

256 megabytes

xi - Solar Storm

You are given an array a1,a2,...,an of distinct positive integers. You have to do the following operation exactly once:

  • choose a positive integer k;
  • for each i from 1 to n, replace ai with ai mod k†.

Find a value of k such that 1≤k≤1018 and the array a1,a2,...,an contains exactly 2 distinct values at the end of the operation. It can be shown that, under the constraints of the problem, at least one such k always exists. If there are multiple solutions, you can print any of them.

† a mod b denotes the remainder after dividing a by b. For example:

  • 7 mod 3=1 since 7=3⋅2+1
  • 15 mod 4=3 since 15=4⋅3+3
  • 21 mod 1=0 since 21=21⋅1+0

Input

Each test contains multiple test cases. The first line contains the number of test cases t (1≤t≤500). The description of the test cases follows.

The first line of each test case contains a single integer n (2≤n≤100) --- the length of the array a.

The second line of each test case contains n integers a1,a2,...,an (1≤ai≤1017) --- the initial state of the array. It is guaranteed that all the ai are distinct.

Note that there are no constraints on the sum of n over all test cases.

Output

For each test case, output a single integer: a value of k (1≤k≤1018) such that the array a1,a2,...,an contains exactly 2 distinct values at the end of the operation.

Example

Input

Copy

复制代码

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

Output

Copy

复制代码
7
30
3
5000
1000000000000000000

Note

In the first test case, you can choose k=7. The array becomes 8 mod 7,15 mod 7,22 mod 7,30 mod 7=1,1,1,2, which contains exactly 2 distinct values ({1,2}).

In the second test case, you can choose k=30. The array becomes 0,0,8,0,8, which contains exactly 2 distinct values ({0,8}). Note that choosing k=10 would also be a valid solution.

In the last test case, you can choose k=1018. The array becomes 2,1, which contains exactly 2 distinct values ({1,2}). Note that choosing k=1018+1 would not be valid, because 1≤k≤1018 must be true.

解题说明:此题是一道数学题,选择一个正整数k,将数组每个元素变为a(i)%k ,求解k设为什么值可以使得原数组有且仅有两种值。找规律能发现只需要找到所有元素相对于第一个元素的偏移量的最大公约数,然后乘以2就是需要的值。

cpp 复制代码
#include<bits/stdc++.h>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int main() 
{
    long long int t, n; 
    cin >> t;
    while (t-- && cin >> n) 
    {
        long long int a[n], k = 0; 
        for (int i = 0; i < n; i++)
        {
            cin >> a[i];
            k = __gcd(k, abs(a[i] - a[0]));
        }
        cout << k + k << '\n';
    }
    return 0;
}
相关推荐
wabs6665 分钟前
关于二叉树【429.N叉树的层序遍历的思考】
数据结构·c++·算法·leetcode·二叉树
hetao173383711 分钟前
2026-09-08 hetao1733837 的刷题记录
c++·算法
C++ 老炮儿的技术栈31 分钟前
MFC CPtrArray的用法
开发语言·数据结构·c++·算法·mfc·c
weixin_4462608537 分钟前
CABAL:用于追踪同行评审中合谋投标影响的多智能体仿真框架
人工智能·算法·机器学习
不会就选b37 分钟前
算法日常・每日刷题--<贪心>6
数据结构·算法·leetcode
青山木1 小时前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
Tisfy1 小时前
LeetCode 3870.统计范围内的逗号:模拟 或 一步计算
数学·算法·leetcode·题解·模拟·遍历
明月_清风1 小时前
字符串匹配四大经典算法:BF、RK、BM、KMP 到底有什么区别?
后端·算法
明月_清风2 小时前
多模式字符串匹配:Trie 与 AC 自动机
后端·算法
木井巳2 小时前
【BFS/DFS 解决 FloodFill 算法】衣橱整理
java·算法·leetcode·深度优先·广度优先·宽度优先