이 문제에서 급수의 n번째 항을 정의하는 숫자 n이 주어집니다. 우리의 임무는 시리즈 1*2*3 + 2*3*4+3*4*5 + 의 합을 찾는 프로그램을 만드는 것입니다. . . + n*(n+1)*(n+2) in C++ .
문제 설명 − 여기에서 주어진 급수의 n항까지의 합은 1*2*3 + 2*3*4+ 3*4*5 + 입니다. . . + n*(n+1)*(n+2). 이것은 n*(n+1)*(n+2)의 합으로 디코딩될 수 있습니다.
문제를 이해하기 위해 예를 들어보겠습니다.
입력
n = 5
출력
420
설명
1*2*3 + 2*3*4 + 3*4*5 + 4*5*6 + 5*6*7 = 6 + 24 + 60 + 120 + 210 = 420
솔루션 접근 방식
문제를 해결하는 간단한 방법은 1에서 n까지의 루프를 사용하고 각 반복에서 곱을 찾아 sumVar에 추가하는 것입니다. 루프가 종료되면 sumVar를 반환합니다.
알고리즘
- 1단계 - 루프 i =1 ~ n.
- 1.1단계 - sumVar, sumVar 업데이트 +=i*(i+1)*(i+2)
- 2단계 - sumVar를 인쇄합니다.
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; int calcSeriesSum(int n){ int sumVar = 0; for(int i = 1; i <= n; i++) sumVar = sumVar + ( (i)*(i+1)*(i+2) ); return sumVar; } int main(){ int n = 7; cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n); return 0; }
출력
The sum of series till 7 is 1260
이 접근 방식은 N 차수의 시간 복잡도가 필요하므로 효율적이지 않습니다.
또 다른 접근 방식 급수의 합에 대한 수학 공식을 사용하고 있습니다. 문제 설명에서 논의했듯이 급수는 (n)*(n+1)*(n+2)의 합이라고 할 수 있습니다.
이 정보를 사용하여 합계에 대한 일반 공식을 만들어 보겠습니다.
$Sum =\sum_{\square=1}^\square\blacksquare((\square)\ast(\square+1)\ast(\square+2))$
$=\sum\lbrace{(n^2+n)(n+2)}\rbrace$
$=\sum\lbrace{n^3 + n^2 + 2n^2 + 2n}\rbrace$
$=\sum\lbrace{n^3 +3n^2 + 2n}\rbrace$
$=\sum_{\square=1}^\square\blacksquare\square^3+3\sum_{\square=1}^\square\blacksquare\square^2+2\sum_{\square=1}^\ square\blacksquare\square^\blacksquare$
이제 합계에 대한 일반 공식을 사용하여
$\sum_{\square=1}^\square\blacksquare\square^3=\frac{(\square\ast(\square+1))^2}{2}$
$\sum_{\square=1}^\square\blacksquare\square^2=\frac{(\square\ast(\square+1)\ast(2\square+1))^\blacksquare}{6} $
$\sum_{\square=1}^\square\blacksquare\square^\blacksquare=\frac{(\square\ast(\square+1)^\blacksquare}{2}$
이 모든 것을 합산 공식에 더하면
$Sum=\frac{(\square\ast(\square+1))^2}{2^2}+\frac{3(\square\ast(\square+1)\ast(2\square+1) ))^\blacksquare}{6}+\frac{2(\square\ast(\square+1))^\blacksquare}{2}$
$=\frac{(\square\ast(\square+1))^\blacksquare}{2}[( (n * (n+1))/2 ) + (3(2n+1)/3) + 2]$
$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[n^2+ n + 4n + 2 + 4]$
$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[n^2+ 5n + 6]$
$=\frac{(\square\ast(\square+1))^\blacksquare}{4}[(n+2)(n+3)]$
=¼[ (n)*(n+1)*(n+2)*(n+3) ]
n번째 항까지의 급수는 다음 공식을 사용하여 계산됩니다.
¼[ (n)*(n+1)*(n+2)*(n+3) ]
우리 솔루션의 작동을 설명하는 프로그램
예시
#include <iostream> using namespace std; int calcSeriesSum(int n){ int sumVar = 0; sumVar = ( (n)*(n + 1)*(n + 2)*(n + 3)/4 ); return sumVar; } int main(){ int n = 7; cout<<"The sum of series till "<<n<<" is "<<calcSeriesSum(n); return 0; }
출력
The sum of series till 7 is 1260