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

โปรแกรมหาผลรวมของอนุกรม 1*2*3 + 2*3*4+ 3*4*5 + . . + n*(n+1)*(n+2) ใน C++


ในปัญหานี้ เราได้รับตัวเลข n ที่กำหนดเทอมที่ n ของอนุกรมนี้ งานของเราคือสร้างโปรแกรม เพื่อค้นหาผลรวมของชุดข้อมูล 1*2*3 + 2*3*4+3*4*5 + . . + n*(n+1)*(n+2) ใน C++ .

คำอธิบายปัญหา − ที่นี่ เราจะหาผลรวมจนถึง n เทอมของอนุกรมที่กำหนดด้วย 1*2*3 + 2*3*4+ 3*4*5 + . . + n*(n+1)*(n+2). สามารถถอดรหัสเป็นผลรวมของ n*(n+1)*(n+2) ได้

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

อินพุต

n = 5

ผลลัพธ์

420

คำอธิบาย

1*2*3 + 2*3*4 + 3*4*5 + 4*5*6 + 5*6*7 = 6 + 24 + 60 + 120 + 210 = 420

แนวทางการแก้ปัญหา

วิธีง่ายๆ ในการแก้ปัญหาคือการใช้ลูปจาก 1 ถึง n และค้นหาผลิตภัณฑ์ในการวนซ้ำแต่ละครั้งและเพิ่มลงใน sumVar หลังจากลูปสิ้นสุด ให้คืนค่า sumVar

อัลกอริทึม

  • ขั้นตอนที่ 1 − วง i =1 ถึง n.
    • ขั้นตอนที่ 1.1 − อัปเดต sumVar, sumVar +=i*(i+1)*(i+2)
  • ขั้นตอนที่ 2 − พิมพ์ sumVar

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

ตัวอย่าง

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   for(int i = 1; i <= n; i++)
      sumVar = sumVar + ( (i)*(i+1)*(i+2) );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

The sum of series till 7 is 1260

วิธีการนี้ไม่ได้ผลเนื่องจากต้องใช้เวลาในความซับซ้อนของลำดับของ N.

แนวทางอื่น กำลังใช้สูตรทางคณิตศาสตร์สำหรับผลรวมของอนุกรม ดังที่เราได้กล่าวไปแล้วในคำอธิบายปัญหา ชุดนี้สามารถกล่าวได้ว่าผลรวมของ (n)*(n+1)*(n+2)

ใช้ข้อมูลนี้สร้างสูตรทั่วไปสำหรับผลรวม

$Sum =\sum_{\square=1}^\square\blacksquare((\square)\ast(\square+1)\ast(\square+2))$

$=\sum\lbrace{(n^2+n)(n+2)}\rbrace$

$=\sum\lbrace{n^3 + n^2 + 2n^2 + 2n}\rbrace$

$=\sum\lbrace{n^3 +3n^2 + 2n}\rbrace$

$=\sum_{\square=1}^\square\blacksquare\square^3+3\sum_{\square=1}^\square\blacksquare\square^2+2\sum_{\square=1}^\ สี่เหลี่ยม\blacksquare\square^\blacksquare$

ตอนนี้ใช้สูตรทั่วไปสำหรับผลรวม

$\sum_{\square=1}^\square\blacksquare\square^3=\frac{(\square\ast(\square+1))^2}{2}$

$\sum_{\square=1}^\square\blacksquare\square^2=\frac{(\square\ast(\square+1)\ast(2\square+1))^\blacksquare}{6} $

$\sum_{\square=1}^\square\blacksquare\square^\blacksquare=\frac{(\square\ast(\square+1)^\blacksquare}{2}$

บวกทั้งหมดเหล่านี้เพื่อผลรวมของสูตร

$Sum=\frac{(\square\ast(\square+1))^2}{2^2}+\frac{3(\square\ast(\square+1)\ast(2\square+1) ))^\blacksquare}{6}+\frac{2(\square\ast(\square+1))^\blacksquare}{2}$

$=\frac{(\square\ast(\square+1))^\blacksquare}{2}[( ( (n * (n+1))/2 ) + (3(2n+1)/3) + 2]$

$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[n^2+ n + 4n + 2 + 4]$

$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[n^2+ 5n + 6]$

$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[(n+2)(n+3)]$

=¼[ (n)*(n+1)*(n+2)*(n+3) ]

ของอนุกรมถึงเทอมที่ n คำนวณโดยใช้สูตร

¼[ (n)*(n+1)*(n+2)*(n+3) ]

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

ตัวอย่าง

#include <iostream>
using namespace std;
int calcSeriesSum(int n){
   int sumVar = 0;
   sumVar = ( (n)*(n + 1)*(n + 2)*(n + 3)/4 );
   return sumVar;
}
int main(){
   int n = 7;
   cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n);
   return 0;
}

ผลลัพธ์

The sum of series till 7 is 1260