Computer >> 컴퓨터 >  >> 프로그램 작성 >> C++

C++에서 시리즈 1^2 - 2^2 + 3^2 - 4^2 ... 최대 n개 항의 합계 찾기

<시간/>

이 문제에서 정수 값 N이 주어집니다. 우리의 임무는 시리즈 1^2 - 2^2 + 3^2 - 4^2 ... 최대 n항의 합을 찾는 것입니다. .

문제를 이해하기 위해 예를 들어 보겠습니다.

Input : N = 3
Output : 6

설명 -

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

솔루션 접근 방식

문제를 해결하는 간단한 방법은 루프를 사용하는 것입니다. iterator i를 사용하여 1에서 n까지 반복합니다.

i가 홀수이면 (i 2 )를 합으로 합니다.

i가 짝수이면 빼십시오(i 2 ) 합계. 마지막으로 루프 이후에 시리즈의 합을 반환합니다.

알고리즘

초기화 - 합계 =0.

  • 1단계 −n까지 루프, i -> 1에서 n

    • 1.1단계 - i가 홀수이면 (i 2 를 더합니다. ) 합계, if (i % 2 ==0) => 합계 +=i 2

    • 1.2단계 - i가 짝수이면 (i 2 를 더합니다. ) 합계, if (i % 2 ==0) => 합계 -=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