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

C++에서 시리즈 1-2+3-4+5-6+7....의 합 찾기

<시간/>

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

시리즈는 1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 + 9 - 10...

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

Input : N = 4
Output : -2

설명 -

1 - 2 + 3 - 4 = -2

솔루션 접근 방식

문제를 해결하는 간단한 방법은 급수의 일반항을 찾은 다음 n항까지 합을 찾는 것입니다. 그리고 공식을 사용하여 합계를 계산하면 시간이 O(1)로 단축됩니다.

시리즈는,

1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 + 9 - 10...

일부 값에 대한 계열의 합을 구해 보겠습니다.

합계(1) =1

합계(2) =1 - 2 =-1

합계(3) =1 - 2 + 3 =2

합계(4) =1 - 2 + 3 - 4 =-2

합계(5) =1 - 2 + 3 - 4 + 5 =3

합계(6) =1 - 2 + 3 - 4 + 5 - 6 =-3

합계(7) =1 - 2 + 3 - 4 + 5 - 6 + 7 =4

합계(8) =1 - 2 + 3 - 4 + 5 - 6 + 7 - 8 =-4

여기에서 합계가 다음과 같이 공식화될 수 있다는 결론을 내릴 수 있습니다.

n이 홀수인 경우 합계 =+(n+1)/2.

n이 짝수인 경우 합계 =-(n)/2.

예시

솔루션 작동을 설명하는 프로그램

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

출력

The sum of series upto n terms is -78