1 条题解

  • 0
    @ 2025-3-1 11:00:08
    #include <iostream>
    #include <cmath>
    using namespace std;
    
    // ??????????
    bool isPrime(int num) {
        if (num < 2) return false;
        for (int i = 2; i <= sqrt(num); i++) {
            if (num % i == 0) return false;
        }
        return true;
    }
    
    // ????????
    void generatePrimeRibs(int current, int length, int targetLength) {
        if (length == targetLength) {
            if (isPrime(current)) {
                cout << current << endl;
            }
            return;
        }
    
        // ??????????? 1?3?7?9
        for (int digit = 1; digit <= 9; digit += 2) {
            int newNum = current * 10 + digit;
            if (isPrime(newNum)) {
                generatePrimeRibs(newNum, length + 1, targetLength);
            }
        }
    }
    
    int main() {
        int N;
        cin >> N;
    
        // ?????,??????? 2?3?5?7
        int primes[] = {2, 3, 5, 7};
        for (int i = 0; i < 4; i++) {
            generatePrimeRibs(primes[i], 1, N);
        }
    
        return 0;
    }
    
    • 1

    [USACO1.5] 特殊的质数肋骨 Superprime Rib

    信息

    ID
    5276
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    10
    已通过
    7
    上传者