社区讨论

区别在哪

P3383【模板】线性筛素数参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mifwqf1v
此快照首次捕获于
2025/11/26 19:14
3 个月前
此快照最后确认于
2025/11/26 20:01
3 个月前
查看原帖
RT,第一份是直接预处理出1e8以内的质数,第二份是预处理出来<=n的质数,为什么一个WA一个AC(为了方便阅读省略了快读)
CPP
#include<bits/stdc++.h>
#define pc putchar
using namespace std;
using namespace IO;
namespace Main{
	const int N=1e8+7;
	int n,q;
	bool st[N];
	vector<int> primes;
	inline void init(){
		for(int i=2;i<N;i++){
			if(!st[i]){
				primes.push_back(i);
			}
			for(int j=0;primes[j]<N/i;j++){
				st[i*primes[j]]=1;
				if(!(i%primes[j])){
					break;
				}
			}
		}
		return ;
	}
	inline void main(){
		init();
		n=rd(),q=rd();
		while(q--){
			wt(primes[rd()-1]),pc('\n');
		}
		return ;
	}
}
signed main(){
	Main::main();
	return 0;
}

CPP
#include<bits/stdc++.h>
#define int __int128
#define pc putchar
using namespace std;
using namespace IO;
namespace Main{
	const int N=1e8+7;
	int n,q;
	bool st[N];
	vector<int> primes;
	inline void init(){
		for(int i=2;i<=n;i++){
			if(!st[i]){
				primes.push_back(i);
			}
			for(int j=0;primes[j]<=n/i;j++){
				st[i*primes[j]]=1;
				if(!(i%primes[j])){
					break;
				}
			}
		}
		return ;
	}
	inline void main(){
		n=rd(),q=rd();
		init();
		while(q--){
			wt(primes[rd()-1]),pc('\n');
		}
		return ;
	}
}
signed main(){
	Main::main();
	return 0;
}

回复

0 条回复,欢迎继续交流。

正在加载回复...