이 문제에서는 요소 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