Trong bài toán này, chúng ta được cho một giá trị nguyên N. Nhiệm vụ của chúng ta là tìm Tổng của Chuỗi 1 ^ 2 - 2 ^ 2 + 3 ^ 2 - 4 ^ 2 ... tối đa n số hạng .
Hãy lấy một ví dụ để hiểu vấn đề,
Input : N = 3 Output : 6
Giải thích -
12 - 22 + 32 = 1 - 4 + 9 = 6
Phương pháp tiếp cận giải pháp
Một cách tiếp cận đơn giản để giải quyết vấn đề là sử dụng các vòng lặp. Chúng tôi sẽ lặp từ 1 đến n với trình lặp i.
Nếu tôi lẻ, hãy thêm (i 2 ) thành tổng.
Nếu tôi chẵn, hãy trừ (i 2 ) thành tổng. Cuối cùng, trả về tổng của chuỗi sau vòng lặp.
Thuật toán
Khởi tạo - sum =0.
-
Bước 1 −Loop đến n, i -> 1 đến n
-
Bước 1.1 - nếu tôi là số lẻ, hãy thêm (i 2 ) thành tổng, nếu (i% 2 ==0) => sum + =i 2
-
Bước 1.2 - nếu tôi là số chẵn, hãy thêm (i 2 ) thành tổng, nếu (i% 2 ==0) => sum - =i 2
-
-
Bước 2 - Trả lại số tiền.
Ví dụ
Chương trình minh họa hoạt động của giải pháp của chúng tôi
#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); }
Đầu ra
The sum of series is 15
Một cách tiếp cận khác đang sử dụng công thức cho tổng của chuỗi.
Nếu N chẵn,
$ \ mathrm {sum \:=\:1 ^ 2 \:- \:2 ^ 2 \:+ \:3 ^ 2 \:- \:4 ^ 2 \:+ \:\ dotm \:+ \ :( n-1) ^ 2 \:- n ^ 2} $
$ \ mathrm {sum \:=\ :( 1-2) (1 + 2) \:+ \ :( 3-4) (3 + 4) \:+ \:\ dotm (n-1-n) ( n-1 + n)} $
$ \ mathrm {sum \:=\:(- 1) (3) \:+ \:(- 1) (7) \:+ \:(- 1) (2n-1)} $
$ \ mathrm {sum \:=\:(- 1) (1 + 2 + 3 + 4 + \ dotm \:+ (n-1) + n)} $
$ \ mathrm {sum \:=\:(- 1) \:* \:\ begin {bmatrix} \ frac {n * (n + 1)} {2} \ end {bmatrix}} $
Nếu N là số lẻ,
$ \ mathrm {sum \:=\:1 ^ 2 \:- \:2 ^ 2 \:+ \:3 ^ 2 \:- \:4 ^ 2 \:+ \:\ dotm \:+ \ :( n-2) ^ 2 \ :-( n-1) ^ 2 \:+ \:n ^ 2} $
$ \ mathrm {sum \:=\ :( 1 ^ 2 \:- \:2 ^ 2 \:+ \:3 ^ 2 \:- \:4 ^ 2 \:+ \:\ dotm \:+ \:(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} $
Ví dụ
Chương trình minh họa hoạt động của giải pháp của chúng tôi
#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); }
Đầu ra
The sum of series is 15