按由小到大顺序枚举长度不超过2*i的回文串。

using ll = long long;
void fun() {
    vector<ll> v;
    // 回文半径为i,可得长度为2*i-1,2*i的回文串。
     for (ll i=1; i<=1e3; i*=10) { //1e3回文半径=4, 得到[1, 99,999,999]内回文整数
        // 奇数长度回文
        for (ll j=i; j<i*10; j++) {
            ll a = j, b = j/10;
            while (b) {
                a = a*10+b%10;
                b /= 10;
            }
            v.push_back(a);
        }
        // 偶数长度回文
        for (ll j=i; j<i*10; j++) {
            ll a = j, b = j;
            while (b) {
                a = a*10+b%10;
                b /= 10;
            }
            v.push_back(a);
        }
    }
    for (ll i:v) {
        cout << i << endl;
    }
}

判断k进制下x是否回文

bool ok(ll x, int k) {
        ll y = 0, p = x;
        while (x) {
            y = y*k + x%k;
            x /= k;
        }
        return p == y;
    }

2081. k 镜像数字的和

866. 回文素数

906. 超级回文数