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

C++에서 주어진 반복 관계의 n번째 항 찾기

<시간/>

컨셉

bn이 반복 관계 b1로 표시되는 일련의 숫자라고 가정합니다. =1 및bn+1 /bn =2 n . 우리의 임무는 log2의 값을 결정하는 것입니다. (bn ) 주어진 n.

입력

6

출력

15

설명

로그2 (bn ) =(n * (n - 1)) / 2=(6*(6-1))/2=15

입력

200

출력

19900

방법

bn+1 /bn =2 n

bn /bn-1 =2 n-1

.

.

.

b2 /b1 =2 1 , 우리는 달성하기 위해 위의 모든 것을 곱합니다.

(bn+1 /bn ).(bn /n-1 )……(b2 /b1 ) =2 n + (n-1)+…..+1

따라서 bn+1 /b1 =2 n(n+1)/2

우리가 알기 때문에 1 + 2 + 3 + .... + (n-1) + n =n(n+1)/2

따라서 bn+1 =2 n(n+1)/2 . b1; 초기 값을 가정합니다. b1 =1

따라서 bn+1 =2sup> n(n+1)/2

이제 n에 (n+1)을 대입하면 다음을 얻습니다.

bn =2 n(n-1)/2

양변에 로그를 취하면 다음을 얻습니다.

로그2 (bn ) =n(n-1)/2

예시

// C++ program to find nth term of
// a given recurrence relation
#include <bits/stdc++.h>
using namespace std;
// Shows function to return required value
int sum(int n1){
   // Now get the answer
   int ans1 = (n1 * (n1 - 1)) / 2;
   //Now return the answer
   return ans1;
}
// Driver program
int main(){
   // Get the value of n
   // int n = 6;
   int n = 200;
   // Uses function call to print result
   cout << sum(n);
   return 0;
}

출력

19900