在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
广告
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP