在 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.