이 문제에서 정수 값 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