C++程序找出数列9, 33, 73, 129…中的第n项


在这个问题中,我们给定一个整数N。任务是找到数列9, 33, 73, 129…中的第n项。

让我们举个例子来理解这个问题:

输入

N = 4

输出

129

解释

该数列到第n项是 9, 33, 73, 129…

解决方案

问题的解决方案在于找到该数列的第n项。我们将用数学方法找到它,然后将通项公式应用到我们的程序中。

首先,让我们通过将数列向后移动一位来进行相减。

Sum = 9 + 33 + 73 + … + t(n-1) + t(n)
- Sum = 9 + 33 + 73 + …. + t(n-1) + t(n)

0 = 9 + ((33- 9) + (73 - 33) + … + (tn) - t(n-1)) - t(n)
t(n) = 9 + (24 + 40 + 56 + …. )

24 + 40 + 56 + …. is an A.P. series with common difference 16.

这使得通项为:

t(n) = 9 + [ ((n-1)/2)*(2*(24) + (n-1-1)*16) ]

$$t(n)=9+[\left(\frac{n-1}{2}\right)*((2*24)+(n-2)*16)]$$ $$t(n)=9+[\left(\frac{n-1}{2}\right)*((2*24)+(n-2)*8)]$$

t(n) = 9 + [(n - 1) * ((24) + (n - 2) * 8)]

t(n) = 9 + [(n - 1) * (24 + 8n - 16)]

t(n) = 9 + [(n - 1) * (8 + 8n)]

t(n) = 9 + 8 * [(n - 1) * (n + 1)]

t(n) = 9 + 8 * [n2 - 12]

t(n) = 9 + 8 * n2 - 8

t(n) = 8 * n2 + 1

程序说明我们解决方案的工作原理:

示例

 在线演示

#include <iostream>
using namespace std;
int findNthTerm(int n) {
   return (8*n*n) + 1 ;
}
int main(){
   int n = 12;
   cout<<"The series is 9, 33, 73, 129...\n";
   cout<<n<<"th term of the series is "<<findNthTerm(n);
   return 0;
}

输出

The series is 9, 33, 73, 129...
12th term of the series is 1153

更新于:2021年3月13日

浏览量:320

开启你的职业生涯

完成课程获得认证

开始学习
广告