题解
2026-08-13 15:23:04
发布于:广东
3阅读
0回复
0点赞
#include<iostream>
#include<algorithm>
using namespace std;
int n,q,a[1000005];
int gcd(int x,int y){
while (x%y!=0){
int z=x%y;
x=y;
y=z;
}
return y;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin>>n>>q;
for(int i=1;i<=n;i++){
cin>>a[i];
}
int g=0;
// 之后要特判 n=1 的情况:只有一个数,gcd就是a1+i
for(int i=2;i<=n;i++){
g=__gcd(g,abs(a[i]-a[1]));
}
for(int i=1;i<=q;i++){
if(g==0){// n=1,差值gcd为0,直接输出a[1]+k
cout<<a[1]+i<<endl;
}else{
int res=__gcd(g,a[1]+i);
cout<<res<<endl;
}
}
return 0;
}
这里空空如也





有帮助,赞一个