蒟蒻50TLE救命!!
  • 板块P1621 集合
  • 楼主封禁用户
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/3/5 09:58
  • 上次更新2023/10/28 07:16:50
查看原帖
蒟蒻50TLE救命!!
511528
封禁用户楼主2022/3/5 09:58

RT,qwq

#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
int fa[maxn],f[maxn];
int Find(int x) {
	if(x==fa[x]) return x;
	return fa[x]=Find(fa[x]);
}
int q(int op,int l) {
	int u=Find(op),v=Find(l);
	if(u!=v) fa[u]=v;
}
int n,m,p;
int main() {
	scanf("%d%d%d",&n,&m,&p);
	for(int i=n;i<=m;i++) {
		fa[i]=i;
	}
	f[1]=1;
	for (int i=2;i<=m/2;i++) {
        int k=i;
        if(f[k]==0) {
            while (k+i<=m) {
				k+=i;
				f[k]=1;
			}
		}
    }
	for(int i=p;i<=m;i++) {
		int op,l;
		if(f[i]==0) {
			l=i;
			op=0;
			while(l<=m) {
				if(l>=n) {
					if(op==0) op=l;
					q(op,l);
					l+=i;
				}
			}
		}
	}
	int ans=0;
	for(int i=n;i<=m;i++) {
		if(fa[i]==i) ans++;
	}
	printf("%d",ans);
	return 0;
}
2022/3/5 09:58
加载中...