欧拉筛/并查集 80 分求调!
  • 板块P1621 集合
  • 楼主xiaoshumiao
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/12/3 18:05
  • 上次更新2023/12/3 20:32:24
查看原帖
欧拉筛/并查集 80 分求调!
1008513
xiaoshumiao楼主2023/12/3 18:05
#include<cstdio>
using namespace std;
const int MAXB=100005;
int fa[MAXB];
bool isprime[MAXB];
int myfind(int x) {
  if(x==fa[x])
    return x;
  fa[x]=myfind(fa[x]);
  return fa[x];
}
int main() {
  int a,b,p;
  scanf("%d %d %d",&a,&b,&p);
  for(int i=2;i<=b;i++) {
  	fa[i]=i;
  	isprime[i]=true;
  }
  for(int i=2;i<=b;i++) {
  	if(!isprime[i])
  	  continue;
  	for(int j=i+i;j<=b;j+=i) {
  	  isprime[j]=false;
  	  if(i>=p)
	    fa[myfind(i)]=myfind(j);
  	}
  }
  int cnt=0;
  for(int i=a;i<=b;i++) {
  	if(fa[i]==i)
  	  cnt++;
  }
  printf("%d",cnt);
  return 0;
/*
input
1 1000 2
your output
74
answer
75
*/
}
2023/12/3 18:05
加载中...