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