C ++程序在系列7、15、32,...中找到第n个术语

在这个问题中,我们得到一个整数N。任务是在系列7、15、32 ...中找到第n个项。

让我们举个例子来了解这个问题,

输入

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<<"t该系列的h项是 "<<findNthTerm(n);
   return 0;
}
输出结果
The series is 7, 15, 32, 67...
12t该系列的h项是 18419