4367: GESP C++ 五级 3小杨的幸运数202312

内存限制:128 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:3 解决:2

题目描述

样例输入 复制

2 4
1
4
5
9

样例输出 复制

4
lucky
8
lucky

提示

#include<bits/stdc++.h>
using namespace std;

const int N = 1001 * 1001;
const double eps = 1e-8;
bool is_lucky[N + 5];
int next_lucky[N + 5];
int main() {
    int a, T;
    scanf("%d%d", &a, &T);
    for (int i = 1; i <= N; i ++) {
        int t = int(sqrt(i) + eps);
        if (i >= a && t * t == i)
            is_lucky[i] = 1;
        if (! is_lucky[i])
            continue ;
        for (int j = i + i; j <= N; j += i)
            is_lucky[j] = 1;
    }
    for(int i = N; i; i --)
        next_lucky[i] = is_lucky[i] ? i : next_lucky[i + 1];
    while(T --) {
        int x;
        scanf("%d", &x);
        if (is_lucky[x])
            cout << "lucky" << endl;
        else
        cout << next_lucky[x] << endl;
    }
    return 0;
}