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

Chương trình tìm tổng của dãy số 1 * 2 * 3 + 2 * 3 * 4 + 3 * 4 * 5 +. . . + n * (n + 1) * (n + 2) 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ố. Nhiệm vụ của chúng ta là tạo chương trình tìm tổng của chuỗi 1 * 2 * 3 + 2 * 3 * 4 + 3 * 4 * 5 +. . . + n * (n + 1) * (n + 2) trong C ++ .

Mô tả sự cố - Ở đây, chúng ta sẽ tìm tổng cho đến n số hạng của dãy số đã cho với là 1 * 2 * 3 + 2 * 3 * 4 + 3 * 4 * 5 +. . . + n * (n + 1) * (n + 2). Điều này có thể được giải mã dưới dạng tổng của n * (n + 1) * (n + 2).

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

Đầu vào

n = 5

Đầu ra

420

Giải thích

1*2*3 + 2*3*4 + 3*4*5 + 4*5*6 + 5*6*7 = 6 + 24 + 60 + 120 + 210 = 420

Phương pháp tiếp cận giải pháp

Một cách đơn giản để giải quyết vấn đề là sử dụng một vòng lặp từ 1 đến n và tìm sản phẩm ở mỗi lần lặp và thêm nó vào sumVar. Sau khi vòng lặp kết thúc, trả về sumVar.

Thuật toán

  • Bước 1 - vòng lặp i =1 đến n.
    • Bước 1.1 - cập nhật sumVar, sumVar + =i * (i + 1) * (i + 2)
  • Bước 2 - in sumVar.

Chương trình minh họa hoạt động của giải pháp của chúng tôi

Ví dụ

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   for(int i = 1; i <= n; i++)
      sumVar = sumVar + ( (i)*(i+1)*(i+2) );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

The sum of series till 7 is 1260

Cách tiếp cận này không hiệu quả vì nó mất thời gian phức tạp của thứ tự N.

Một cách tiếp cận khác đang sử dụng công thức toán học cho tổng của chuỗi. Như chúng ta đã thảo luận trong phần mô tả vấn đề, chuỗi có thể được nói là tổng của (n) * (n + 1) * (n + 2).

Sử dụng thông tin này, hãy tạo công thức chung cho tổng.

$ Sum =\ sum _ {\ square =1} ^ \ square \ blacksquare ((\ square) \ ast (\ square + 1) \ ast (\ square + 2)) $

$ =\ sum \ lbrace {(n ^ 2 + n) (n + 2)} \ rbrace $

$ =\ sum \ lbrace {n ^ 3 + n ^ 2 + 2n ^ 2 + 2n} \ rbrace $

$ =\ sum \ lbrace {n ^ 3 + 3n ^ 2 + 2n} \ rbrace $

$ =\ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 3 + 3 \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 2 + 2 \ sum _ {\ square =1} ^ \ hình vuông \ blacksquare \ square ^ \ blacksquare $

Bây giờ, sử dụng công thức chung cho các tổng,

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 3 =\ frac {(\ square \ ast (\ square + 1)) ^ 2} {2} $

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ 2 =\ frac {(\ square \ ast (\ square + 1) \ ast (2 \ square + 1)) ^ \ blacksquare} {6} $

$ \ sum _ {\ square =1} ^ \ square \ blacksquare \ square ^ \ blacksquare =\ frac {(\ square \ ast (\ square + 1) ^ \ blacksquare} {2} $

Việc thêm tất cả những thứ này vào công thức tính tổng sẽ tạo ra,

$ Sum =\ frac {(\ square \ ast (\ square + 1)) ^ 2} {2 ^ 2} + \ frac {3 (\ square \ ast (\ square + 1) \ ast (2 \ square + 1 )) ^ \ blacksquare} {6} + \ frac {2 (\ square \ ast (\ square + 1)) ^ \ blacksquare} {2} $

$ =\ frac {(\ square \ ast (\ square + 1)) ^ \ blacksquare} {2} [((n * (n + 1)) / 2) + (3 (2n + 1) / 3) + 2] $

$ =\ frac {(\ square \ ast (\ square + 1)) ^ \ blacksquare} {4} [n ^ 2 + n + 4n + 2 + 4] $

$ =\ frac {(\ square \ ast (\ square + 1)) ^ \ blacksquare} {4} [n ^ 2 + 5n + 6] $

$ =\ frac {(\ square \ ast (\ square + 1)) ^ \ blacksquare} {4} [(n + 2) (n + 3)] $

=¼ [(n) * (n + 1) * (n + 2) * (n + 3)]

Chuỗi số cho đến số hạng thứ n được tính bằng công thức,

¼[ (n)*(n+1)*(n+2)*(n+3) ]

Chương trình minh họa hoạt động của giải pháp của chúng tôi

Ví dụ

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   sumVar = ( (n)*(n + 1)*(n + 2)*(n + 3)/4 );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

Đầu ra

The sum of series till 7 is 1260