Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Số palindrome K chữ số thứ N C++

Tìm palindrome (đối xứng) có đúng K chữ số, là số thứ N trong dãy tăng dần.

Ý tưởng: Palindrome K chữ số xác định bởi nửa đầu.

  • K chẵn: nửa đầu có K/2 chữ số.
  • K lẻ: nửa đầu có K/2 + 1 chữ số (chữ số giữa dùng chung).

Nửa đầu bắt đầu từ 10^(len-1). Số thứ N có nửa đầu = 10^(len-1) + N - 1.

Triển khai C++

#include <bits/stdc++.h>
using namespace std;

void nthPalindrome(int n, int k) {
    int halfLen = (k + 1) / 2;
    int start = pow(10, halfLen - 1);
    int firstHalf = start + n - 1;

    string s = to_string(firstHalf);
    string rev = s;
    reverse(rev.begin(), rev.end());
    if (k % 2 == 1) rev = rev.substr(1); // bỏ chữ số giữa

    cout << s << rev << endl;
}

int main() {
    nthPalindrome(7, 8); // 10066001
    return 0;
}

Kết quả

10066001