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

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告