70分,求助
查看原帖
70分,求助
548214
Zyuming1234楼主2021/11/21 14:45

###70分,求助

#include<bits/stdc++.h>

using namespace std;
int a;

inline int read() {
    int X = 0;
    bool flag = 1;
    char ch = getchar();
    while (ch < '0' || ch > '9') {
        if (ch == '-') flag = 0;
        ch = getchar();
    }
    while (ch >= '0' && ch <= '9') {
        X = (X << 1) + (X << 3) + ch - '0';
        ch = getchar();
    }
    if (flag) return X;
    return ~(X - 1);
}

bool fenge(int n) {
    while (n > 0) {
        if (n % 10 == 7) {
            return true;
        }
        n /= 10;
    }
    return false;
}

int dizeng(int n) {
    int t = 0;
    int x = n;
    while (x > 0) {
        if (x % 10 == 7) {
            return ((x + 1) * pow(10, t));
        }
        x /= 10;
        t++;
    }
    return n+1;
}

bool factor(int n) {
    for (int i = 2; i <= n / 7; ++i) {
        if (n % i == 0 && (fenge(i) || fenge(n / i)))
            return true;
    }
    return false;
}

bool judge(int n) {
    if (n % 7 == 0 || fenge(n) || factor(n))
        return true;
    else
        return false;
}

bool baoshu(int n) {
    if (judge(n))
        return true;
    else
        return false;
}

int main() {
    int n;
    n = read();
    for (int i = 0; i < n; ++i) {
        a = read();
        if (judge(a))
            printf("-1\n");
        else {
            do {
                a= dizeng(a);
            }while(baoshu(a));
            printf("%d\n", a);
        }
    }
    return 0;
}
2021/11/21 14:45
加载中...