Cho số nguyên n. Tính tổng chuỗi:
S = 2 + (2+4) + (2+4+6) + ... + (2+4+...+2n)
Ví dụ
n = 3: S = 2 + (2+4) + (2+4+6) = 2 + 6 + 12 = 20
Cách 1: Vòng lặp lồng O(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;
}
}
Cách 2: Công thức toán học O(1)
Số hạng thứ i: 2 + 4 + ... + 2i = i(i+1).
Tổng: S = Σ[i=1..n] i(i+1) = Σ(i² + i) = Σi² + Σi
= n(n+1)(2n+1)/6 + n(n+1)/2 = n(n+1)/2 * [(2n+1)/3 + 1] = n(n+1)/2 * (2n+4)/3 = n(n+1)(n+2)/3
Chương trình C++
#include <iostream>
using namespace std;
long long calcSeriesSum(int n) {
return 1LL * n * (n + 1) * (n + 2) / 3;
}
int main() {
int n = 5;
cout << "Tong chuoi = " << calcSeriesSum(n); // Output: 70
return 0;
}
Kết quả
Tong chuoi = 70