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

C++에서 시리즈 1, 2, 11, 12, 21…의 N번째 항을 찾는 프로그램

<시간/>

이 문제에서는 숫자 N이 주어집니다. 우리의 임무는 C++에서 시리즈 1, 2, 11, 12, 21…의 N번째 항을 찾는 프로그램을 만드는 것입니다.

문제 설명

급수의 N번째 항을 찾으려면 -

1, 2, 11, 12, 21, 22, 111, 112, .... Nterms

시리즈의 일반 용어를 찾을 것입니다.

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

입력

N =8

출력

112

해결 방법

일반 용어를 도출하려면 계열을 자세히 관찰해야 합니다. 이 시리즈에서 우리는 값에 1과 2만 있음을 알 수 있습니다. 그리고 모든 항은 1과 2의 교대입니다. 따라서 일반 항은 다음과 같습니다.

$$T_{(N)}=T_{(n/2)}*10 + 1,\:if\:N\:is\:odd.$$

$$T_{(N)}=T_{((n/2)-1)}*10 + 2, if\:N\:is\:even.$$

#include <iostream>
using namespace std;
int findNTerm(int N) {
   if(N == 1)
   return 1;
   if(N == 2)
   return 2;
   int value;
      if(N%2 == 0){
         value = (findNTerm((N/2)-1)*10) + 2;
      }
      else
         value = (findNTerm((N/2))*10) + 1; return value;
}
int main() {
   int N = 12;
   cout<<N<<"Th term of the series is "<<findNTerm(N);
   return 0;
}

출력

12Th term of the series is 212