Cho số nguyên n. Nhiệm vụ: tính tổng lập phương của n số tự nhiên đầu tiên: 1³ + 2³ + ... + n³.
Ví dụ 1
Input – 4
Output – 100
Giải thích: 1³ + 2³ + 3³ + 4³ = 1 + 8 + 27 + 64 = 100.
Ví dụ 2
Input – 8
Output – 1296
Công thức toán học
$$\sum_{i=1}^n i^3 = \left(\frac{n(n+1)}{2}\right)^2 = (1+2+...+n)^2$$
Tổng lập phương bằng bình phương tổng số tự nhiên.
Ví dụ code (lặp)
#include <iostream>
using namespace std;
long long sumOfCubesLoop(int n) {
long long sum = 0;
for (int i = 1; i <= n; i++) {
sum += 1LL * i * i * i;
}
return sum;
}
int main() {
int n = 10;
cout << "Sum of cubes (loop): " << sumOfCubesLoop(n) << endl;
return 0;
}
Kết quả
Sum of cubes (loop): 3025
Ví dụ code (công thức O(1))
long long sumOfCubesFormula(int n) {
long long t = 1LL * n * (n + 1) / 2;
return t * t;
}
So sánh: Công thức O(1) nhanh hơn hẳn cho n lớn. Cả hai cho kết quả giống nhau (3025 cho n=10 vì 55²=3025).
Lưu ý: Dùng long long để tránh tràn số (n=10⁶ → kết quả ~ 10¹⁸).