在C++中求1^2 - 2^2 + 3^2 - 4^2 ... 直到n項的和
在這個問題中,我們給定一個整數N。我們的任務是求1^2 - 2^2 + 3^2 - 4^2 ... 直到n項的和。
讓我們來看一個例子來理解這個問題:
Input : N = 3 Output : 6
說明 -
12 - 22 + 32 = 1 - 4 + 9 = 6
解決方案方法
解決這個問題的一個簡單方法是使用迴圈。我們將使用迭代器i從1迴圈到n。
如果i是奇數,則將(i2)新增到總和。
如果i是偶數,則從總和中減去(i2)。最後,在迴圈結束後返回級數的和。
演算法
初始化 - sum = 0。
步驟1 - 迴圈到n,i -> 1到n
步驟1.1 - 如果i是奇數,則將(i2)新增到sum,如果(i % 2 == 0) => sum += i2
步驟1.2 - 如果i是偶數,則從sum中減去(i2),如果(i % 2 == 0) => sum -= i2
步驟2 - 返回sum。
示例
程式說明了我們解決方案的工作原理
#include <iostream>
using namespace std;
int findSumOfSeries(int n) {
int sum = 0;
for (int i = 1; i <= n; i++) {
if (i % 2 == 0)
sum -= (i*i);
else
sum += (i*i);
}
return sum;
}
int main(void) {
int n = 5;
cout<<"The sum of series is "<<findSumOfSeries(n);
}輸出
The sum of series is 15
另一種方法是使用級數求和公式。
如果N是偶數,
$\mathrm{sum\:=\:1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:(n-1)^2\:-n^2}$
$\mathrm{sum\:=\:(1-2)(1+2)\:+\:(3-4)(3+4)\:+\:\dotsm(n-1-n)(n-1+n)}$
$\mathrm{sum\:=\:(-1)(3)\:+\:(-1)(7)\:+\:(-1)(2n-1)}$
$\mathrm{sum\:=\:(-1)(1+2+3+4+\dotsm\:+(n-1)+n)}$
$\mathrm{sum\:=\:(-1)\:*\:\begin{bmatrix}\frac{n*(n+1)}{2} \end{bmatrix}}$
如果N是奇數,
$\mathrm{sum\:=\:1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:(n-2)^2\:-(n-1)^2\:+\:n^2}$
$\mathrm{sum\:=\:(1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:(n-2)^2\:-(n-1)^2)\:+\:n^2}$
$\mathrm{sum\:=\:\lbrace(-1)\:*[\frac{n*(n+1)}{2}]\rbrace\:+\:n^2}$
$\mathrm{sum\:=\:(\frac{-n^2\:+\:n\:+\:2n^2}{2})}$
$\mathrm{sum\:=\:(n+n^2)/2\:=\:n^*(n+1)/2}$
示例
程式說明了我們解決方案的工作原理
#include <iostream>
using namespace std;
int findSumOfSeries(int n) {
int sum = 0;
if(n % 2 == 0){
sum = (-1)*(n*(n+1))/2;
}
else {
sum = (n*(n+1))/2;
}
return sum;
}
int main(void) {
int n = 5;
cout<<"The sum of series is "<<findSumOfSeries(n);
}輸出
The sum of series is 15
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP