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

Tổng của chuỗi 2 + (2 + 4) + (2 + 4 + 6) + (2 + 4 + 6 + 8) + ... + (2 + 4 + 6 + 8 + ... + 2n) trong C ++

Trong bài toán này, chúng ta được cho một số n xác định số hạng thứ n của dãy số 2 + (2 + 4) + (2 + 4 + 6) + (2 + 4 + 6 + 8) + ... + (2 + 4 + 6 + 8 + ... + 2n). Nhiệm vụ của chúng tôi là tạo một chương trình để tìm tổng của chuỗi.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

n = 3

Đầu ra

Giải thích - tổng =(2) + (2 + 4) + (2 + 4 + 6) =2 + 6 + 12 =20

Một giải pháp đơn giản cho vấn đề là sử dụng một vòng lặp lồng nhau. Vòng lặp bên trong tìm phần tử thứ i của chuỗi và sau đó cộng tất cả các phần tử vào biến tổng.

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 calcSeriesSum(int n) {
   int sum = 0;
   for (int i = 1; i<=n; i++) {
      int even = 2;
      for (int j = 1; j<=i; j++) {
         sum += even;
         even += 2;
      }
   }
   return sum;
}
int main() {
   int n = 5;
   cout<<"Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+"<<(2*n)<<") is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+10) is 70

Đây không phải là cách hiệu quả nhất để giải quyết vấn đề vì độ phức tạp về thời gian của vấn đề là bậc O (n 2 ).

Một giải pháp hiệu quả cho vấn đề là sử dụng công thức toán học cho tổng của chuỗi.

Dãy số là 2 + (2 + 4) + (2 + 4 + 6) + (2 + 4 + 6 + 8) + ... + (2 + 4 + 6 + 8 + ... + 2n)

Số hạng thứ n của sê-ri là

a n =(2 + 4 + 6 + 8 +… + 2n) =(n * n) + n

a n là tổng của các số chẵn đến n.

Tổng của chuỗi là

sum = 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2+4+6+8+...+2n)
sum = ∑ (n2 + n)
sum = ∑ n2 + ∑ n
sum = [ (n*(n+1)*(2n + 1))/6 ] + [ (n*(n+1))/2 ]
sum = ½ (n*(n+1)) [(2n + 1)/3 + 1]
sum = ½ (n*(n+1)) [(2n + 1 + 3)/3]
sum = ½ (n*(n+1)) [2(n+2)/3]
sum = ⅓ n*(n+1)(n+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 calcSeriesSum(int n) {
   return ((n)*(n+1)*(n+2)/3);
}
int main() {
   int n = 5;
   cout<<"Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+"<<(2*n)<<") is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+10) is 70