为什么使用快读longlong会爆内存,而int快读却可以ac?
查看原帖
为什么使用快读longlong会爆内存,而int快读却可以ac?
463562
Dreamerlee✅楼主2021/3/16 10:22

代码如下所示

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
long long n, k, q, a[100000010], vis[100000010], t;
inline long long read()
{
 long long x = 0, f = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9')
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9')
    {
        x = (x << 1) + (x << 3) + ch - '0';
        ch = getchar();
    }
    return x * f;
}
int main()
{
    n=read(),q=read();
    vis[0] = vis[1] = 1;
    for (int i = 2; i  <= n; i++)
    {
        if (!vis[i])
            a[++t] = i;
        for (int j = 1; j <= t && a[j] * i <= n; j++)
        {
            vis[a[j] * i] = 1;
            if (i % a[j] == 0)
                break;
        }
    }
    for (int i = 1; i <= q; i++)
    {
       k=read();
        cout << a[k] << endl;
    }
    return 0;
}
```cpp
2021/3/16 10:22
加载中...