快读为什么不行?
查看原帖
快读为什么不行?
419173
hiro653楼主2022/9/9 16:41

输入量比较大用了快读,结果全错,显示输出的都是0,本地IDE运行没问题。以下是代码

#include <iostream>
#include<cmath>
using namespace std;
const int N = 1e8 + 10, N2 =4000000;
bool flag[N];//直接标记0,1
int prime[N2], cnt;//prime用来存放质数
inline int  read() {

    int ans = 0; char temp = getchar();
    while (temp < '0' && temp>'9') temp = getchar();
    while (temp >= '0' && temp <= '9') {

        ans = ans * 10 + temp - '0';
        temp = getchar();
    }
    return ans;
}

int main() {

    flag[0] = flag[1] = 1;
    int n, q ;
    cin >> n >> q;
    for (int i = 2; i <= n; i++) {

        if (!flag[i]) prime[++cnt] = i;
        for (int j = 1; j <= cnt; j++) {

            if (i * prime[j] > n) break;
            flag[i * prime[j]] = 1;
            if (i % prime[j] == 0) break;

        }
    }
    for (int i = 0; i < q; i++) {

        int q_now;
        cin >> q_now;
        printf("%d\n", prime[q_now]);
    }
}

2022/9/9 16:41
加载中...