原题链接:https://codeforces.com/problemset/problem/1593/D1
题面:
思路:将所有的数减去最小的数,最后输出全部数的gcd即可。
- #define _CRT_SECURE_NO_WARNINGS 1
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #include
- #define FOR(a, b) for (int i = a; i <= b; i++)
- #define ROF(a, b) for (int i = a; i >= b; i--)
- #define FORj(a, b) for (int j = a; j <= b; j++)
- #define ROFj(a, b) for (int j = a; j >= b; j--)
- #define FORk(a, b) for (int k = a; k <= b; k++)
- #define ROFk(a, b) for (int k = a; k >= b; k--)
- #define mem(i, a) memset(i, a, sizeof(i))
- #define ll long long
- #define inf 0x3f3f3f3f
- #define PII pair
- #define lson l, m, rt << 1
- #define rson m + 1, r, rt << 1 | 1
- #define int long long
- #define endl '\n'
- #define yes cout << "YES" << endl
- #define no cout << "NO" << endl
- #define pi acos(-1.0)
- using namespace std;
- const int maxn = 2e6 + 5;
- int a[maxn];
- void solve() {
- int n, minn = inf;
- cin >> n;
- FOR(1, n) {
- cin >> a[i];
- minn = min(minn, a[i]);
- }
- sort(a + 1, a + n + 1);
- if (a[1] == a[n]) {
- cout << -1 << endl;
- return;
- }
- int sum = 0;
- FOR(1, n) {
- a[i] -= minn;
- sum = __gcd(sum, a[i]);
- }
- cout << sum << endl;
- }
- signed main() {
- cin.tie(0);
- cout.tie(0);
- ios::sync_with_stdio(0);
- int _;
- cin >> _;
- while (_--)
- solve();
- return 0;
- }