20分求助
查看原帖
20分求助
1800410
ideas楼主2025/7/29 15:10
#include<iostream>
using namespace std;
#include<cmath>
int findsquare(int a) {
    int k = ceil(sqrt(a));
    return k * k;
}
bool islucky(int num, int minSuperLucky, int a) {
    if (num < minSuperLucky) {
        return false;
    }
    int squarenum = sqrt(num);
    if (squarenum * squarenum == num && squarenum * squarenum >= minSuperLucky) {
        return true;
    }
    return (num % minSuperLucky== 0);
}
int luckyTransform(int num, int minSuperLucky) {
    while (true) {
        int sqrtnum = sqrt(num);
        if (sqrtnum * sqrtnum == num && sqrtnum * sqrtnum >= minSuperLucky) {
            return num;
        }
        if (num % minSuperLucky == 0) {
            return num;
        }
        num++;
    }
}
void transformNum(int a,int len,int b[]) {
    int minSuperLucky = findsquare(a);
    for (int i = 0;i < len;i++) {
        int num = b[i];
        if (islucky(num, minSuperLucky, a)) {
            cout<<"lucky"<<endl;
        }
        else
        {
            cout << luckyTransform(num,minSuperLucky) << endl;
        }
    } 
}

int main() {
    int a = 0;
    int b = 0;
    cin >> a >> b;
    int s[200000];
    for (int i = 0;i < b;i++) {
        cin >> s[i];
    }
    transformNum(a, b, s);
    system("pause");
    return 0;
}
2025/7/29 15:10
加载中...