回文串专题

典题合集

构造区间[1,n]回文数

时间复杂度:O(nlogn)

vector<long long> huiwen;
auto init=[]{
    for(int i=1;i<=100000;i++){//构造[1,1e9+x]内的回文数
        long long tmp=i,x=i;
        while(tmp){//偶数长度
            x*=10;
            x=x+tmp%10;
            tmp/=10;
        }
        huiwen.push_back(x);
        tmp=i/10,x=i;
        while(tmp){//奇数长度
            x*=10;
            x=x+tmp%10;
            tmp/=10;
        }
        huiwen.push_back(x);
    }
    sort(huiwen.begin(),huiwen.end());
    return 0;
}();

构造区间[l,r]回文素数

所有偶数位的回文数都是11的倍数

时间复杂度:O(nsqrt(n))

int is_prime(int x) {
    if (x == 1)  return 0;
    if (x == 2) return 1;
    for (int i = 2; i * i <= x; i++) {
        if (x % i == 0) return 0;
    }
    return 1;
}
vector<int> init(int a, int b) {
    vector<int> ans;
    for (int i = 1; i <= 100000; i ++) {
        if (i == 9 && a <= 11 && b >= 11) ans.push_back(11);
        int tmp = i / 10, x = i;
        while (tmp > 0) {
            x *= 10;
            x = x + tmp % 10;
            tmp /= 10;
        }
        if (x > b) break;
        if (x >= a && is_prime(x)) ans.push_back(x);
    }
    return ans;
}
posted @ 2023-12-17 20:47  White_Sheep  阅读(7)  评论(0编辑  收藏  举报