TLE了
2025-04-12 17:03:22
发布于:浙江
10阅读
0回复
0点赞
思路:先用埃氏筛筛一遍,之后进行查询(不会线性筛)代码:
#include <bits/stdc++.h>
using namespace std;
int main(){
long long a,b,sz[10000005]={0};
sz[1]=1;
cin >> a >> b;
for(int i=2;i*i<=a;i++){
if(sz[i]==0){
for(int j=2*i;j<=a;j+=i){
sz[j]=1;
}
}
}for(int k=1;k<=b;k++){
int n;
cin >> n;
int num=0;
for(int i=1;i<=a;i++){
if(sz[i]==0)num++;
if(num==n){
cout << i << endl;
break;
}
}
}
return 0;
}
有人会吗
全部评论 1
你 O(n) 预处理第 i 小的质数,到时候直接 O(1) 查询
2025-04-12 来自 广东
0谢谢大佬,会了
2025-04-12 来自 浙江
0
有帮助,赞一个