> 백엔드 개발 > C++ > 본문

C++의 K자리 숫자 중 N번째 회문번호

王林
풀어 주다: 2023-09-07 22:25:02
앞으로
718명이 탐색했습니다.

C++의 K자리 숫자 중 N번째 회문번호

k자리의 n번째 회문 번호를 찾으려면 n번째 회문 번호를 찾을 때까지 첫 번째 k자리 숫자부터 반복하면 됩니다. 이 방법은 효율적이지 않습니다. 직접 시도해 볼 수 있습니다.

이제 k자리의 n번째 회문수를 찾는 효율적인 방법을 살펴보겠습니다.

한 숫자에는 두 개의 반쪽이 있습니다. 전반전은 후반전의 반전과 동일합니다.

n번째 k자리 숫자의 앞부분은

k가 홀수이면 (n-1)+10k/2이고, 그렇지 않으면 (n-1)+10k/입니다. 2- 1

n번째 k자리 숫자의 후반부는 숫자의 전반부의 반전이 됩니다. k가 홀수이면 숫자의 전반부에서 마지막 숫자를 제거합니다.

Algorithm

  • 숫자 n과 k를 초기화합니다.
  • k값을 이용하여 k자리 회문의 전반부의 길이를 구합니다.
  • 회문 수의 전반부는 pow(10, 길이) + n - 1입니다.
  • k가 홀수인 경우 회문 번호의 전반부에서 마지막 숫자를 제거하세요.
  • 전반을 뒤집어서 후반을 인쇄하세요.

Implementation

다음은 위 알고리즘을 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;
}
로그인 후 복사

Output

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

rreee

위 내용은 C++의 K자리 숫자 중 N번째 회문번호의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:tutorialspoint.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!