C++ の K 桁の N 番目の回文番号

王林
リリース: 2023-09-07 22:25:02
転載
702 人が閲覧しました

C++ の K 桁の N 番目の回文番号

k 桁の n 番目の回文番号を見つけるには、最初の k 桁の番号から n 番目の回文番号が見つかるまで繰り返すことができます。この方法は効率的ではありません。自分で試してみることもできます。

ここで、k 桁の n 番目の回文番号を見つける効率的な方法を見てみましょう。

数値には 2 つの半分があります。前半は後半の反転に等しい。

n 番目の k 桁の数値の前半は

k が奇数の場合は (n-1) 10k/2、それ以外の場合はis ( n-1) 10k/2-1

n 番目の k 桁の数値の後半は、数値の前半を反転したものになります。 k が奇数の場合は、数字の前半から最後の桁を削除します。

アルゴリズム

  • 数値 n と k を初期化します。
  • k の値を使用して、k 桁の回文数値の前半の長さを見つけます。
  • 回文番号の前半は pow(10, length) n - 1 です。
  • 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:tutorialspoint.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!