数据这么水??!?
查看原帖
数据这么水??!?
754467
f_hxr_楼主2024/10/22 14:37

纯暴力不加卡时直接草过去

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int maxn=1e6+7;
int N,Q;
int prime[78888],cnt_prime;
bool book[maxn];
void xxs(){
	book[1]=true;
	for(int i=2;i<=1000000;i++){
		if(!book[i])prime[++cnt_prime]=i;
		for(int j=1;j<=cnt_prime&&i*prime[j]<=1000000;j++){
			book[i*prime[j]]=true;
			if(i%prime[j]==0)break;
		}
	}
}
int cnt[maxn];
int main(){
	xxs();
	scanf("%d %d",&N,&Q);
	while(Q--){
		char op;scanf(" %c",&op);
		if(op=='S'){
			int xx;scanf("%d",&xx);
			if(xx==1)continue;
			cnt[xx]^=1;
		}else if(op=='C'){
			int l,r;scanf("%d %d",&l,&r);
			bool flag=0;
			for(int i=1;i<=cnt_prime;i++){
				if(prime[i]>r)continue;
				int tot=0;
				for(int j=l/prime[i]*prime[i];j<=r;j+=prime[i]){
					if(j<l)continue;
					if(cnt[j])++tot;
					if(tot>=2){flag=1;break;}
				}
				if(flag)break;
			}
			if(flag)puts("DA");
			else puts("NE");
		}
	}
	return 0;
}
2024/10/22 14:37
加载中...