Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 3과 4만 있는 숫자 체계에서 n번째 숫자 찾기

<시간/>

이 문제에서는 요소 N이 주어집니다. 3과 4만 있는 수 체계에서 N'번째 숫자를 찾아야 합니다.

숫자 체계는 3, 4, 33, 34, 43, 44, 333, 334, 343, 344, ...

요소로 구성됩니다.

문제를 이해하기 위해 예를 들어보겠습니다.

입력

N = 6

출력

44

설명

숫자 체계의 숫자는 - 3, 4, 33, 34, 43, 44...

솔루션 접근 방식

숫자 체계는 이진수 체계와 유사하지만 숫자 0은 3으로, 숫자 1은 4로 바뀝니다.

이것을 sBinary라고 합시다.

따라서 N번째 숫자는 (n-1)의 Sbinary 변환입니다.

이 지식을 사용하면 (N-1)에 해당하는 이진수를 찾은 다음 3으로 찾은 이진수의 각 자릿수를 더하여 문제를 쉽게 해결할 수 있습니다.

10진수를 2진수로 변환하는 방법은 무엇입니까?

우리 솔루션의 작동을 설명하는 프로그램

예시

#include<iostream>
using namespace std;
void findNThTermNumberSystem(int N) {
   if(N == 1 || N == 2) {
      cout<<(N-1) + 3;
      return;
   }
   N -= 1;
   findNThTermNumberSystem(N/2);
   cout<<((N % 2) + 3);
}
int main(){
   int N = 12;
   cout<<N<<"th term of the number system is ";
   findNThTermNumberSystem(N);
   return 0;
}

출력

12th term of the number system is 434