在 C++ 中求解级数和,其中第 n 项为 n^2 - (n-1)^2


在这个问题中,我们给定一个整数 N。我们的任务是求解级数 n^2 - (n-1)^2 的前 n 项和

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

Input : N = 3
Output : 6

说明

[12 - (0)2] + [22 - (1)2] + [32 - (2)2] = 1 - 0 + 4 - 1 + 9 - 2 = 9

解决方案方法

解决这个问题的一个简单方法是找到级数的通项公式,然后求解前 n 项的和。使用公式计算和可以将时间复杂度降低到 O(1)。此外,结果可能非常大,因此需要对值取模。

让我们推导出级数的第 n 项的公式,

$T_{n}\:=\:\mathrm{n^2-(n-1)^2}$

使用 a2 - b2 公式进行化简,

$T_{n}\:=\:\mathrm{(n+n-1)*(n-n+1)}$

$=\:\mathrm{(2*n-1)*(1)}$

$=\:\mathrm{2*n-1}$

利用这个公式,我们可以求解级数的前 n 项和,

$\mathrm{sum}\:=\:\sum(2*n-1)$

$\mathrm{sum}\:=\:2*\sum{n}\:-\:\sum{1}$

$\mathrm{sum}\:=\:2*(n*(n+1))/2-n$

$\mathrm{sum}\:=\:n*(n+1)-n\:=\:n^2\:+\:n\:-\:n\:=\:n^2$

级数的和为 n2,这是一个很大的数,因此需要取模。

示例

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

#include<iostream>
using namespace std;
#define mod 1000000007
long long calcSumNTerms(long long n) {
   return ((n%mod)*(n%mod))%mod;
}
int main() {
   long long n = 4325353;
   cout<<"The sum of series upto n terms is "<<calcSumNTerms(n); return 0; 
}

输出

The sum of series upto n terms is 678443653

更新于: 2022-01-27

332 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.