30pts 7个MLE 求调!!
  • 板块P1621 集合
  • 楼主hanss6
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/12/30 14:11
  • 上次更新2023/12/30 16:38:50
查看原帖
30pts 7个MLE 求调!!
537719
hanss6楼主2023/12/30 14:11
#include <bits/stdc++.h>
using namespace std;
int ans,p[10005];
bool o[100005];
void shai( ){
	int k=0;
	o[0]=1;
	o[1]=1;
	for(int i=2;i<=100005;i++){
		if(!o[i]){
			p[k]=i;
			for(int j=2;i*j<=100005;j++){
				o[i*j]=1;
			}
			k++;
		}
	}
}
int f[100005];
int find(int x){
	if(f[x]==x)return x;
	else f[x]=find(f[x]);
}
void join(int x,int y){
	int f1=find(x),f2=find(y);
	if(f1!=f2) f[f2]=f1;
}
int a,b,q;

signed main(){
	shai();
	cin>>a>>b>>q;
	for(int i=a;i<=b;i++){
		f[i]=i;
	}
	for(int i=a;i<=b;i++){
		bool flag=0;
		for(int j=i+1;j<=b;j++){
			int x=__gcd(i,j);
			if(x==1) continue;
			for(int k=0;p[k]<=x;k++){
				if(x%p[k]==0&&p[k-1]>=q){
					flag=1;
					break;			
				}
			}
			if(flag){ 
		  		join(i,j);
	    	}
		}
    }
    int ans=0;
    for(int i=a;i<=b;i++){
    	if(f[i]==i)ans++;
	} 
	cout<<ans;
	return 0;
}
2023/12/30 14:11
加载中...