Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ผลรวมของอนุกรม 2^0 + 2^1 + 2^2 +...+ 2^n ใน C++


ในปัญหานี้ เราได้รับตัวเลข n ซึ่งกำหนดพจน์ที่ n ของชุดข้อมูล 2^0, 2^1, 2^2, …, 2^n งานของเราคือสร้างโปรแกรมเพื่อหาผลรวมของอนุกรม 2^0 + 2^1 + 2^2 +...+ 2^n.

มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน

ป้อนข้อมูล

n=6

ผลผลิต

คำอธิบาย

ผลรวม =2^0 + 2^1 + 2^2 + 2^3 + 2^4 + 2^5 + 2^6sum =1 + 2 + 4 + 8 + 16 + 32 + 64 =127 

วิธีแก้ปัญหาอย่างง่ายคือการใช้ลูป ค้นหา 2^i สำหรับแต่ละค่าตั้งแต่ 0 ถึง n แล้วบวกลงในตัวแปรผลรวม

อัลกอริทึม

เริ่มต้นผลรวม =0 ขั้นตอนที่ 1:วนซ้ำจาก i =0 ถึง n และทำตาม :ขั้นตอนที่ 1.1:อัปเดตผลรวม ผลรวม +=2^i ขั้นตอนที่ 2:พิมพ์ผลรวม

ตัวอย่าง

โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา

#include #include ใช้เนมสเปซ std;int calcSeriesSum (int n) { ผลรวม int =0; สำหรับ (int i =0; i <=n; i++) sum +=pow(2, i); ผลตอบแทนรวม;}int main() { int n =11; cout<<"ผลรวมของอนุกรม 2^0 + 2^1 + 2^2 +...+ 2^"< 

ผลลัพธ์

ผลรวมของซีรีส์ 2^0 + 2^1 + 2^2 +...+ 2^11 คือ 4095

นี่ไม่ใช่วิธีที่มีประสิทธิภาพมากที่สุดในการแก้ปัญหานี้ เนื่องจากใช้การวนซ้ำที่ทำให้เวลาของลำดับ O(n) ซับซ้อน

วิธีแก้ปัญหาที่มีประสิทธิภาพมากขึ้น เราจะใช้สูตรทางคณิตศาสตร์สำหรับผลรวม มอบให้โดย

 2^(n+1) - 1

ตัวอย่าง

โปรแกรมแสดงการทำงานของโซลูชันของเรา

#include #include ใช้เนมสเปซ std;int calcSeriesSum(int n) { return ( (pow(2, (n+1)) - 1) );}int main() { int n =11; cout<<"ผลรวมของอนุกรม 2^0 + 2^1 + 2^2 +...+ 2^"< 

ผลลัพธ์

ผลรวมของซีรีส์ 2^0 + 2^1 + 2^2 +...+ 2^11 คือ 4095