1 条题解

  • 0
    @ 2026-2-13 10:08:36
    #include <bits/stdc++.h>
    using namespace std;
    bool isPrime(int x) {
        if (x < 2) return false;
        if (x == 2) return true;
        if (x % 2 == 0) return false;
        for (int i = 3; i * i <= x; i += 2) {
            if (x % i == 0) return false;
        }
        return true;
    }
    int main() {
        int a, b;
        cin >> a >> b;
        vector<int> ans;
    // 枚举回文数长度(1 位到 9 位)
        for (int L = 1; L <= 9; ++L) {
            int halfLen = (L + 1) / 2;
            int start = 1;
            for (int i = 1; i < halfLen; ++i) start *= 10;
            int end = start * 10 - 1;
            for (int i = start; i <= end; ++i) {
                string s = to_string(i);
                string rs = s;
                reverse(rs.begin(), rs.end());
                string pal;
                if (L % 2 == 0)
                    pal = s + rs;
                else
                    pal = s + rs.substr(1);
                int num = stoi(pal);
                if (num < a || num > b) continue;
                if (isPrime(num)) {
                    ans.push_back(num);
                }
            }
        }
        sort(ans.begin(), ans.end());
        ans.erase(unique(ans.begin(), ans.end()), ans.end());
        for (int x : ans) {
            cout << x << '\n';
        }
        return 0;
    }
    
    
    
    • 1

    信息

    ID
    74
    时间
    1000ms
    内存
    128MiB
    难度
    3
    标签
    递交数
    103
    已通过
    13
    上传者