Untuk mencari nombor palindrom ke-n dengan digit k, kita boleh lelaran daripada nombor digit k pertama sehingga kita menemui nombor palindrom ke-. Kaedah ini tidak cekap. Anda boleh mencubanya sendiri.
Sekarang, mari kita lihat cara yang cekap untuk mencari nombor palindrom ke-n bagi digit k.
Terdapat dua bahagian dalam suatu nombor. Separuh masa pertama adalah sama dengan keterbalikan separuh masa kedua.
Separuh pertama nombor ke-k-digit ialah
Jika k ialah nombor ganjil, ia ialah (n-1)+10k/2, jika tidak ia ialah (n-1)+10k/ 2- 1
Separuh kedua nombor k-digit ke-n akan menjadi penyongsangan separuh pertama nombor itu. Jika k ialah nombor ganjil, keluarkan digit terakhir daripada separuh pertama nombor itu.
Berikut ialah pelaksanaan algoritma di atas dalam C++
#include<bits/stdc++.h> using namespace std; void findNthPalindrome(int n, int k) { int temp = (k & 1) ? (k / 2) : (k / 2 - 1); int palindrome = (int)pow(10, temp); palindrome += n - 1; cout << palindrome; if (k & 1) { palindrome /= 10; } while (palindrome) { cout << palindrome % 10; palindrome /= 10; } cout << endl; } int main(){ int n = 7, k = 8; findNthPalindrome(n ,k); return 0; }
Jika anda menjalankan kod di atas, anda akan mendapat keputusan berikut.
rreeeeAtas ialah kandungan terperinci Nombor palindrom ke-n antara digit K dalam C++. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!