AC了但是不确定逻辑对不对
查看原帖
AC了但是不确定逻辑对不对
784606
wuwendi123楼主2025/6/30 23:03
#include <bits/stdc++.h>

using namespace std;
const int N = 1e5+5;
int gcd(int a,int b){
    if(b == 0) return a;
    return gcd(b,a%b);
}
int n,q,a[N],t,k;
vector<int> v;
int main()
{
    cin>>n>>q;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        t = gcd(t,a[i]);
    }
    for(int j=1;j<=q;j++){
        int ans = 0;
        for(int i=1;i<=n;i++){
            ans = gcd(ans,a[i]+j);
        }
        v.push_back(ans);
        if(ans == t){ //找到周期, 提前结束
            k = j;
            break;
        }
    }
    for(int i=0;i<q;i++){
        if(k)cout<<v[i%k]<<endl;
        else cout<<a[1]+i+1<<endl;   //hack(k=0 所有数字相同)
    }
	return 0;
}

2025/6/30 23:03
加载中...