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