萌新求助!
查看原帖
萌新求助!
658786
STUDENT00楼主2022/10/16 07:33

奇怪,怎么全屏绿海红花紫嫣黑压的,46分。

代码如下:

#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[250010],ans; 
int gcd(int a,int b){
	while(b){
		int t=a;
		a=b;
		b=t%b;
	}
	return a;
}
vector<int> q;
bool b[1000010];
signed main(){
	scanf("%lld%lld",&n,&k);
	for(int i=1;i<=k;i++) scanf("%lld",&a[i]);
	a[k]=gcd(a[k],n);
	for(int i=1;i<k;i++) a[i]=gcd(a[i],a[k]);
	for(int i=1;i*i<=a[k];i++){
		if(a[k]%i==0){
			q.push_back(i);
			if(i*i!=a[k]) q.push_back(a[k]/i);
		}
	}
	sort(q.begin(),q.end());
	for(int i=1;i<k;i++) b[lower_bound(q.begin(),q.end(),a[i])-q.begin()]=1;
	for(int i=1;i<q.size();i++){
		if(b[i]){
			for(int j=0;j<i;j++){
				if(q[i]%q[j]) b[j]=1;
			}
		}
	}
	for(ans=1;b[ans];ans++);
	printf("%lld",n/q[ans]);
	return 0;
}

帮帮我呗!

2022/10/16 07:33
加载中...