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

Tổng dãy số 1·2·3 + 2·3·4 + ... + n(n+1)(n+2) trong C

Giới thiệu

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

Ví dụ

Input: n = 5
S = 1·2·3 + 2·3·4 + 3·4·5 + 4·5·6 + 5·6·7
  = 6 + 24 + 60 + 120 + 210 = 420

Công thức toán học

Số hạng thứ i: i(i+1)(i+2) = i³ + 3i² + 2i

Sử dụng công thức tổng lũy thừa:

Σ i   = n(n+1)/2
Σ i²  = n(n+1)(2n+1)/6
Σ i³  = n²(n+1)²/4

S(n) = Σ(i³ + 3i² + 2i)
     = n²(n+1)²/4 + 3·n(n+1)(2n+1)/6 + 2·n(n+1)/2
     = n(n+1)(n+2)(n+3) / 4

Hai phương pháp

1. Công thức toán học O(1)

sum = n*(n+1)*(n+2)*(n+3) / 4

2. Vòng lặp O(n)

res = 0
for i = 1 to n:
    res += i * (i+1) * (i+2)

Code C

#include <stdio.h>

int main() {
    int n = 6;

    // Phương pháp 1: Công thức
    long long sum1 = 1LL * n * (n+1) * (n+2) * (n+3) / 4;
    printf("Cong thuc: The sum is %lld\n", sum1);

    // Phương pháp 2: Vòng lặp
    long long sum2 = 0;
    for (int i = 1; i <= n; i++)
        sum2 += 1LL * i * (i+1) * (i+2);
    printf("Vong lap: The sum is %lld\n", sum2);

    return 0;
}

Kết quả

Cong thuc: The sum is 756
Vong lap: The sum is 756

Lưu ý

  • Dùng long long tránh tràn số với n lớn
  • Công thức O(1) hiệu quả hơn cho n lớn