玄学 RE 求助
  • 板块学术版
  • 楼主Cssen
  • 当前回复4
  • 已保存回复4
  • 发布时间2023/7/30 15:33
  • 上次更新2023/11/3 06:54:27
查看原帖
玄学 RE 求助
593495
Cssen楼主2023/7/30 15:33

P1835,但在本地和 Acwing Editor 上都跑得出来。

#include<iostream>
#include<cstring>
#include<cstdio>
#include<cmath>
using namespace std;
const int maxn=5e6+5;
int p[maxn],x,ans;
bool vis[maxn];
void olprime(int n){
	for(int i=2;i<=n;i++){
		if(!vis[i]) p[++x]=i;
		for(int j=1;j<=x&&i*p[j]<=n;j++){
			vis[i*p[j]]=1;
			if(i%p[j]==0) break;
		}
	}
}
int main(){
	int l,r;
	scanf("%d%d",&l,&r);
	if(l==1) l++;
	olprime((int)ceil(sqrt(r)));
	memset(vis,0,sizeof(vis));
	for(int i=1;i<=x;i++){
		int start=l%p[i]==0?l:(l/p[i]+1)*p[i];
		if(start==p[i]) start+=p[i];
		for(int j=start;j<=r;j+=p[i]){
			vis[j-l+1]=1;
		}
	}
	for(int i=l;i<=r;i++)
		ans+=(!vis[i-l+1]);
	printf("%d",ans);
	return 0;
}
2023/7/30 15:33
加载中...