k 桁の n 番目の回文番号を見つけるには、最初の k 桁の番号から n 番目の回文番号が見つかるまで繰り返すことができます。この方法は効率的ではありません。自分で試してみることもできます。
ここで、k 桁の n 番目の回文番号を見つける効率的な方法を見てみましょう。
数値には 2 つの半分があります。前半は後半の反転に等しい。
n 番目の k 桁の数値の前半は
k が奇数の場合は (n-1) 10k/2、それ以外の場合はis ( n-1) 10k/2-1
n 番目の k 桁の数値の後半は、数値の前半を反転したものになります。 k が奇数の場合は、数字の前半から最後の桁を削除します。
以下は、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; }
上記のアルゴリズムの C での実装です。上記のコードを実行すると、次の結果が得られます。以下の結果。
えええええ以上がC++ の K 桁の N 番目の回文番号の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。