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

ผลรวมของซีรีส์ 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2+4+6+8+...+2n) ใน C++


ในปัญหานี้ เราได้รับตัวเลข n ซึ่งกำหนดพจน์ที่ n ของอนุกรม 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2 +4+6+8+...+2n). งานของเราคือสร้างโปรแกรมเพื่อค้นหาผลรวมของซีรีส์

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

ป้อนข้อมูล

n = 3

ผลผลิต

คำอธิบาย ผลรวม =(2) + (2+4) + (2+4+6) =2 + 6 + 12 =20

วิธีแก้ปัญหาอย่างง่ายคือการใช้การวนซ้ำซ้อน วงในหาองค์ประกอบ ith ของชุดข้อมูลแล้วรวมองค์ประกอบทั้งหมดเข้ากับตัวแปรผลรวม

ตัวอย่าง

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

#include <iostream>
using namespace std;
int calcSeriesSum(int 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;
      }
   }
   return sum;
}
int main() {
   int n = 5;
   cout<<"Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+"<<(2*n)<<") is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+10) is 70

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

วิธีแก้ปัญหาที่มีประสิทธิผลคือการใช้สูตรทางคณิตศาสตร์สำหรับผลรวมของชุดข้อมูล

ซีรี่ย์คือ 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2+4+6+8+...+2n)

เทอมที่ n ของซีรีส์คือ

an =(2 + 4 + 6 + 8 + … + 2n) =(n*n) + n

an คือผลรวมของเลขคู่ไม่เกิน n

ผลรวมของซีรีส์คือ

sum = 2 + (2+4) + (2+4+6) + (2+4+6+8) + ... + (2+4+6+8+...+2n)
sum = ∑ (n2 + n)
sum = ∑ n2 + ∑ n
sum = [ (n*(n+1)*(2n + 1))/6 ] + [ (n*(n+1))/2 ]
sum = ½ (n*(n+1)) [(2n + 1)/3 + 1]
sum = ½ (n*(n+1)) [(2n + 1 + 3)/3]
sum = ½ (n*(n+1)) [2(n+2)/3]
sum = ⅓ n*(n+1)(n+2)

ตัวอย่าง

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

#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
   return ((n)*(n+1)*(n+2)/3);
}
int main() {
   int n = 5;
   cout<<"Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+"<<(2*n)<<") is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

Sum of the series 2 + (2+4) + (2+4+6) + ... + (2+4+6+...+10) is 70