Gojo_Satoru2023 @ 2024-06-15 17:16:02
WA代码:
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e8;
int n , m ;
int mark[N] , p[N] , cnt ;
void prime(){
for(int i = 2 ; i <= n ; i ++){
if(!mark[i]){
p[++cnt] = i ;
}
for(int j = 1 ; p[j] * i <= n ; j ++){
mark[i * p[j]] = 1 ;
if(i % p[j] == 0) {
break ;
}
}
}
}
int main(){
cin >> n >> m ;
prime();
for(int i = 1 ; i <= m ; i ++){
int x ;
cin >> x ;
cout << p[x] << "\n";
continue ;
}
return 0 ;
}
AC代码:
#include <bits/stdc++.h>
using namespace std ;
const int N = 1e8;
int n , m ;
int p[N] , mark[N] , cnt ;
void prime(){
for(int i = 2 ; i <= n ; i ++){
if(!mark[i]){
p[++cnt] = i ;
}
for(int j = 1 ; p[j] * i <= n ; j ++){
mark[i * p[j]] = 1 ;
if(i % p[j] == 0) {
break ;
}
}
}
}
int main(){
cin >> n >> m ;
prime();
for(int i = 1 ; i <= m ; i ++){
int x ;
cin >> x ;
cout << p[x] << "\n";
continue ;
}
return 0 ;
}
by Gojo_Satoru2023 @ 2024-06-15 17:16:23
这是为什么
by Gojo_Satoru2023 @ 2024-06-15 17:17:24
在线等 , 挺急的
by Ctrl_sku @ 2024-06-15 17:22:06
因为你菜
by Gojo_Satoru2023 @ 2024-06-15 17:23:55
@lili_dhc 别叫
by 解方橙 @ 2024-06-15 17:34:59
数组开小了,UB吧
@Gojo_Satoru2023
by abdmm_365 @ 2024-06-15 17:56:29
#include<bits/stdc++.h>
using namespace std;
int n,q,k,cnt;
int pri[10000010];
bool vis[100000010];
int main(){
cin>>n>>q;
vis[1] = true;
for(int i=2;i<=n;i++){
if(vis[i] == false) pri[++cnt] = i;
for(int j=1;j<=cnt and i*pri[j]<=n;j++){
vis[i*pri[j]] = true;
if(i%pri[j] == 0) break;
}
}
for(int i=1;i<=q;i++){
scanf("%d",&k);
printf("%d\n",pri[k]);
}
return 0;
}
by Gojo_Satoru2023 @ 2024-06-15 17:57:34
@解方橙 只是定义p数组和mark数组换了个位置
by 解方橙 @ 2024-06-15 18:11:45
@Gojo_Satoru2023
1e8的数组只开到99999999,如果n=1e8那么数组存不下就会访问别的数组的存储空间,所以数组的顺序对答案有影响
以及 @abdmm_365 谁问你了
by Gojo_Satoru2023 @ 2024-06-15 18:16:52
@解方橙 谢谢 , 已关
by abdmm_365 @ 2024-06-15 22:05:20
@解方橙 给大佬您鉴赏一下,没有人问