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

Tổng chuỗi 2⁰ + 2¹ + 2² + ... + 2ⁿ trong C++

Cho số nguyên n. Tính tổng S = 2⁰ + 2¹ + 2² + ... + 2ⁿ.

Ví dụ

n = 6 → S = 1 + 2 + 4 + 8 + 16 + 32 + 64 = 127

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

long long sum = 0;
for (int i = 0; i <= n; i++) sum += (1LL << i); // Dùng bit shift nhanh hơn pow()

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

Tổng cấp số nhân: S = 2^(n+1) - 1.

long long sum = (1LL << (n + 1)) - 1;

Lưu ý: Với n ≥ 63, cần dùng __int128 hoặc thư viện big integer.

Chương trình C++

#include <iostream>
using namespace std;

long long calcSeriesSum(int n) {
    if (n >= 62) return -1; // Tràn long long
    return (1LL << (n + 1)) - 1;
}

int main() {
    int n = 11;
    cout << "Tong chuoi 2^0 + ... + 2^" << n << " = " << calcSeriesSum(n);
    return 0;
}

Kết quả

Tong chuoi 2^0 + ... + 2^11 = 4095