https://codeforces.com/contest/1458/problem/A
本来以为数论只会GCD,结果gcd都不会了
这题关键是转化那个答案怎么求,gcd(a,b)=gcd(a-b,b)这是经典的辗转相除法依赖的基本性质
然后最后的答案就变成了gcd(a1+bj,a2-a1,a3-a1,an-a1)那么我们先把这这后面一坨求出来就行了
啊我好菜啊
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxl=3e5+10;
int n,m,k,cnt,tot,cas,ans;
ll a[maxl],b[maxl];
bool vis[maxl];
char s[maxl];
inline void prework()
{
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++)
scanf("%lld",&a[i]);
for(int i=1;i<=m;i++)
scanf("%lld",&b[i]);
sort(a+1,a+1+n);
}
inline void mainwork()
{
ll d=0;
for(int i=2;i<=n;i++)
d=__gcd(d,a[i]-a[1]);
for(int i=1;i<=m;i++)
printf("%lld%c",__gcd(d,a[1]+b[i])," \n"[i==m]);
}
inline void print()
{
}
int main()
{
int t=1;
//scanf("%d",&t);
for(cas=1;cas<=t;cas++)
{
prework();
mainwork();
print();
}
return 0;
}