이 문제에서 정수 N이 주어집니다. 작업은 n번째 항을 찾는 것입니다. 7, 15, 32....
문제를 이해하기 위해 예를 들어보겠습니다.
입력
N = 6
출력
281
설명
n번째 항까지의 급수는 7, 15, 32, 67, 138, 281입니다.
솔루션 접근 방식
문제의 해결책은 시리즈를 디코딩하는 데 있습니다. 시리즈가 혼합된 시리즈임을 알 수 있습니다.
값 빼기,
T(2) - T(1) = 15 - 7 = 8 T(3) - T(2) = 32 - 15 = 17 So, T(2) = 2*T(1) + 1 T(3) = 2*T(2) + 2 T(n) = 2*T(n-1) + (n-1)
따라서 n번째 항의 값은 마지막 항을 사용하여 구합니다. 이를 찾으려면 1에서 n까지 반복하고 계열의 각 값을 찾습니다.
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; int findNthTerm(int n) { if (n == 1) return 7; int termN = 7; for (int i = 2; i <= n; i++) termN = 2*termN + (i - 1); return termN; } int main(){ int n = 12; cout<<"The series is 7, 15, 32, 67...\n"; cout<<n<<"th term of the series is "<<findNthTerm(n); return 0; }
출력
The series is 7, 15, 32, 67... 12th term of the series is 18419