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
廣告