Computer >> Máy Tính >  >> Lập trình >> C ++

Tìm Tổng của chuỗi 1 ^ 2 - 2 ^ 2 + 3 ^ 2 - 4 ^ 2 ... tối đa n số hạng trong C ++

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