在C++中求級數√3 + √12 + ... 的前N項和
在這個問題中,我們給定一個整數N。我們的任務是 *求級數√3 + √12 + ... 的前n項和*。
這個級數是 $\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$
即,這是一個平方根的級數。
讓我們透過一個例子來理解這個問題:
Input : N = 3 Output : 10.3922
**解釋** −
$\sqrt3 + \sqrt12 + \sqrt27 = 1.7320 + 3.4641 + 5.1961 = 10.3922$
解題方法
解決這個問題的一個簡單方法是找到級數的通項,然後求出前n項的和。使用公式計算和可以將時間複雜度降低到O(1)。
級數為:
$\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$
這裡,所有項都有 $\sqrt3$ 。將其作為公因式提出,我們得到:
$\Rightarrow\:\sqrt{3}(\sqrt{1}\:+\:\sqrt{4}\: +\: \sqrt{9} \:+\: \sqrt{16}\:+\:\dotsm)$
$\Rightarrow\:\sqrt{3}(1\:+\:2\:+\:3\:+\:4+\:\dotsm)$
因此,通項為:
$\mathrm{T_n\:=\:n*\sqrt{3}}$
利用這個公式,我們可以求出級數的前n項和:
$\mathrm{Sum}\:=\:\sum{n}^*\sqrt{3}$
$\mathrm{Sum}\:=\:\sqrt{3}^*\sum{n}$
$\mathrm{Sum}\:=\:\sqrt{3}*\frac{n*(n+1)}{2}$
示例
程式演示瞭解決方案的工作原理
#include<iostream> #include<math.h> using namespace std; float calcSumNTerms(float n) { return ((sqrt(3)) * ((n*(n+1))/2)); } int main() { float n = 25; cout<<"The sum of series upto n terms is "<<calcSumNTerms(n); return 0; }
輸出
The sum of series upto n terms is 562.917
廣告