作者昨天第一次打cf,就取得了通过0题(+369)的好成绩
Div.2对于作者来说还是太难了点。。。
下面是A题的题目以及题解
可以概括为:如何选出两个数,加上d,使它们的gcd最大?
如果直接暴力求解会超出时间限制(像作者一样)
不过该题可以做一些数学上的转化
对于两个数ai和aj,加上d后是ai+d和aj+d,求gcd,可以根据gcd的性质做出转化(辗转相除法)

当aj+d是ai-aj的倍数时,gcd可以最大化,此时gcd=ai-aj
所以我们只要找到max和min然后相减就行
cpp
#include <iostream>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int t;
cin >> t;
while (t--) {
int n, k;
cin >> n;
int max, min;
cin >> k;
max = min = k;
for (int j = 1; j < n; j++) {
cin >> k;
if (k > max) max = k;
if (k < min) min = k;
}
cout << (max - min) << "\n";
}
return 0;
}


