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

หาผลรวมของอนุกรม 1^2 - 2^2 + 3^2 - 4^2 ... ไม่เกิน n เงื่อนไขใน C++


ในปัญหานี้ เราได้รับค่าจำนวนเต็ม N ภารกิจของเราคือ ค้นหาผลรวมของอนุกรม 1^2 - 2^2 + 3^2 - 4^2 ... ไม่เกิน n เงื่อนไข .

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

Input : N = 3
Output : 6

คำอธิบาย

12 - 22 + 32 = 1 - 4 + 9 = 6

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

วิธีง่ายๆในการแก้ปัญหาคือการใช้ลูป เราจะวนจาก 1 ถึง n ด้วย iterator i

หากฉันเป็นคี่ ให้เติม (i 2 ) ถึงผลรวม

ถ้า i เป็นเลขคู่ ให้ลบออก (i 2 ) ถึงผลรวม สุดท้าย ให้คืนค่าผลรวมของอนุกรมหลังลูป

อัลกอริทึม

เริ่มต้น − ผลรวม =0.

  • ขั้นตอนที่ 1 −วนจนถึง n, i -> 1 ถึง n

    • ขั้นตอนที่ 1.1 − ถ้า i เป็นคี่ ให้บวก (i 2 ) เพื่อผลรวม ถ้า (i % 2 ==0) => sum +=i 2

    • ขั้นตอนที่ 1.2 − ถ้า i เป็นเลขคู่ ให้บวก (i 2 ) เพื่อผลรวม ถ้า (i % 2 ==0) => sum -=i 2

  • ขั้นตอนที่ 2 − ผลตอบแทนรวม

ตัวอย่าง

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

#include <iostream>
using namespace std;
int findSumOfSeries(int n) {
   int sum = 0;
   for (int i = 1; i <= n; i++) {
      if (i % 2 == 0)
         sum -= (i*i);
      else
         sum += (i*i);
   }
   return sum;
}
int main(void) {
   int n = 5;
   cout<<"The sum of series is "<<findSumOfSeries(n);
}

ผลลัพธ์

The sum of series is 15

แนวทางอื่น กำลังใช้สูตรสำหรับผลรวมของอนุกรม

ถ้า N เป็นคู่

$\mathrm{sum\:=\:1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:( n-1)^2\:-n^2}$

$\mathrm{sum\:=\:(1-2)(1+2)\:+\:(3-4)(3+4)\:+\:\dotsm(n-1-n)( n-1+n)}$

$\mathrm{sum\:=\:(-1)(3)\:+\:(-1)(7)\:+\:(-1)(2n-1)}$

$\mathrm{sum\:=\:(-1)(1+2+3+4+\dotsm\:+(n-1)+n)}$

$\mathrm{sum\:=\:(-1)\:*\:\begin{bmatrix}\frac{n*(n+1)}{2} \end{bmatrix}}$

ถ้า N เป็นเลขคี่

$\mathrm{sum\:=\:1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:( n-2)^2\:-(n-1)^2\:+\:n^2}$

$\mathrm{sum\:=\:(1^2\:-\:2^2\:+\:3^2\:-\:4^2\:+\:\dotsm\:+\:(n-2)^2\:-(n-1)^2)\:+\:n^2}$

$\mathrm{sum\:=\:\lbrace(-1)\:*[\frac{n*(n+1)}{2}]\rbrace\:+\:n^2}$

$\mathrm{sum\:=\:(\frac{-n^2\:+\:n\:+\:2n^2}{2})}$

$\mathrm{sum\:=\:(n+n^2)/2\:=\:n^*(n+1)/2}$

ตัวอย่าง

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

#include <iostream>
using namespace std;
int findSumOfSeries(int n) {
   int sum = 0;
   if(n % 2 == 0){
      sum = (-1)*(n*(n+1))/2;
   }
   else {
      sum = (n*(n+1))/2;
   }
   return sum;
}
int main(void) {
   int n = 5;
   cout<<"The sum of series is "<<findSumOfSeries(n);
}

ผลลัพธ์

The sum of series is 15