Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Tổng chuỗi 1*2*3 + 2*3*4 + ... + n(n+1)(n+2) trong C++

Tính tổng S = Σ_{i=1}^n i(i+1)(i+2).

Ví dụ

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

Cách 1: Vòng lặp (O(n))

int calcSeriesSum(int n) {
    int sum = 0;
    for (int i = 1; i <= n; i++)
        sum += i * (i+1) * (i+2);
    return sum;
}

Cách 2: Công thức toán học (O(1))

Khai triển:

i(i+1)(i+2) = i^3 + 3i^2 + 2i
Σi^3 = [n(n+1)/2]^2
Σi^2 = n(n+1)(2n+1)/6
Σi   = n(n+1)/2

Tổng quát:

S = n(n+1)(n+2)(n+3) / 4

Cài đặt C++ (Cách 2)

#include <iostream>
using namespace std;

int calcSeriesSum(int n) {
    return n * (n + 1) * (n + 2) * (n + 3) / 4;
}

int main() {
    int n = 7;
    cout << "Tong chuoi den " << n << " la " << calcSeriesSum(n);
    return 0;
}

Output

Tong chuoi den 7 la 1260

So sánh

CáchĐộ phức tạpLưu ý
Vòng lặpO(n)Đơn giản, dễ hiểu
Công thứcO(1)Hiệu quả cho n lớn, cần chú ý tràn số (dùng long long)