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