有三个点TLE,求助qwq
查看原帖
有三个点TLE,求助qwq
981956
jiangsixian楼主2024/8/11 21:54

如题,代码如下。

// I love CCF!
#include <bits/stdc++.h>
#define MAXN 10000000
using namespace std;

bool b[MAXN + 10];

bool check(int x)
{
    while (x)
    {
        if (x % 10 == 7) return 1;
        x /= 10;
    }
    return 0;
}

int main()
{
    int T = 0; scanf("%d", &T);
    int ask[T] = {};
    for (int i = 0; i < T; i++)
    {
        scanf("%d", &ask[i]);
    }

    memset(b, 1, sizeof(b));
    for (int i = 1; i <= MAXN; i++)
    {
        if (!b[i]) continue;
        if (check(i) || i % 7 == 0)
            for (int j = i; j <= MAXN; j += i) b[j] = false;
    }

    for (int i = 0; i < T; i++)
    {
        if (!b[ask[i]]) printf("-1\n");
        else
            for (int j = ask[i] + 1; j <= MAXN; j++)
                if (b[j]) {printf("%d\n", j); break;}
    }
    return 0;
}

2024/8/11 21:54
加载中...