Nombor palindrom ke-n antara digit K dalam C++

王林
Lepaskan: 2023-09-07 22:25:02
ke hadapan
719 orang telah melayarinya

Nombor palindrom ke-n antara digit K dalam C++

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.

Algoritma

  • Memulakan nombor n dan k.
  • Cari panjang separuh pertama palindrom digit k menggunakan nilai k.
  • Separuh pertama nombor palindrom ialah pow(10, panjang) + n - 1.
  • Jika k ialah nombor ganjil, keluarkan digit terakhir daripada separuh pertama palindrom.
  • Terbalikkan separuh masa pertama dan cetak separuh masa kedua.

Implementation

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;
}
Salin selepas log masuk

Output

Jika anda menjalankan kod di atas, anda akan mendapat keputusan berikut.

rreeee

Atas 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!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!