社区讨论

数组过大 编译失败 求助

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

讨论操作

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

当前回复
9 条
当前快照
1 份
快照标识符
@lo3jhuoy
此快照首次捕获于
2023/10/24 07:39
2 年前
此快照最后确认于
2023/10/24 07:39
2 年前
查看原帖
确定是1e8了啊,怎么还会CE呢???
CPP
#include<iostream>
#include<vector>
const int maxn = (int)1e8;
int p[maxn];
bool np[maxn] = {true};
long long ri(){
	static char c;
	static long long k;
	static bool s;
	k = 0, s = false, c = '\0';
	while (c < '0' || c > '9') if ((c = getchar()) =='-') s = true;
	while (c >= '0' && c <= '9'){
		k = (k << 3) + (k << 1) + (c - '0');
		c = getchar();
	}
	return s?-k:k;
}
void calcP(){
    int num, k = 0;
    for (num=2;num<maxn;num++){
        if (!np[num]) p[k++] = num;
        for (int i=0;i<k;i++){
            np[num*k] = true;
            if (num%k == 0) break;
        }
    }
}
int main(){
    calcP();
    int n, q;
    std::cin >> n >> q;
    while (q--){
        std::cout << p[ri()] << std::endl;
    }
}

回复

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

正在加载回复...