考察gcd的性质, 知道了就是水题
序列的gcd == 序列差分的gcd
$gcd(a, b, c) = gcd(a, b - a, c - b)$
坑点:利用差分算出来的gcd可能出现负数,输出前abs下
$tip$:用cin和cout记得取消同步,不过时限2s也够啦,
#include <bits/stdc++.h>
#define int long long
const int N = 2e5 + 10;
int a[N], b[N], n, m;
signed main() {
std::ios::sync_with_stdio(false);
std::cin.tie(0), std::cout.tie(0);
std::cin >> n >> m;
for (int i = 1; i <= n; i ++) std::cin >> a[i];
for (int i = 1; i <= m; i ++) std::cin >> b[i];
int d = 0;
for (int i = 2; i <= n; i ++) d = std::__gcd(d, a[i] - a[i - 1]);
for (int i = 1; i <= m; i ++) std::cout << abs(std::__gcd(d, a[1] + b[i])) << " ";
return 0;
}