Computer >> Máy Tính >  >> Lập trình >> C ++

Tính tổng của chuỗi 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ n trong C ++


Trong bài toán này, chúng ta được cung cấp một số n xác định số hạng thứ n của chuỗi 2 ^ 0, 2 ^ 1, 2 ^ 2,…, 2 ^ n. Nhiệm vụ của chúng ta là tạo một chương trình để tìm tổng của chuỗi 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ n.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào

 n =6 

Đầu ra

Giải thích

 sum =2 ^ 0 + 2 ^ 1 + 2 ^ 2 + 2 ^ 3 + 2 ^ 4 + 2 ^ 5 + 2 ^ 6sum =1 + 2 + 4 + 8 + 16 + 32 + 64 =127  

Một giải pháp đơn giản cho vấn đề là sử dụng vòng lặp. Tìm 2 ^ i, cho mỗi giá trị từ 0 đến n và thêm nó vào biến tổng.

Thuật toán

 Khởi tạo sum =0 Bước 1:Lặp lại từ i =0 đến n. Và làm theo:Bước 1.1:Cập nhật sum, sum + =2 ^ i.Bước 2:In tổng. 

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

 #include  #include  using namespace std; int calcSeriesSum (int n) {int sum =0; for (int i =0; i <=n; i ++) sum + =pow (2, i); return sum;} int main () {int n =11; cout <<"Tính tổng của dãy số 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^" < 

Đầu ra

 Tổng của chuỗi 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ 11 là 4095 

Đây không phải là phương pháp hiệu quả nhất để giải quyết vấn đề này vì nó sử dụng một vòng lặp làm cho độ phức tạp về thời gian của nó theo thứ tự O (n).

Một giải pháp hiệu quả hơn, chúng tôi sẽ sử dụng công thức toán học cho tổng. Nó được đưa ra bởi

 2 ^ (n + 1) - 1 

Ví dụ

Chương trình minh họa hoạt động của giải pháp của chúng tôi,

 #include  #include  using namespace std; int calcSeriesSum (int n) {return ((pow (2, (n + 1)) - 1));} int main () { int n =11; cout <<"Tính tổng của dãy số 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^" < 

Đầu ra

 Tổng của chuỗi 2 ^ 0 + 2 ^ 1 + 2 ^ 2 + ... + 2 ^ 11 là 4095