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

시리즈의 합 찾기 ?3 + ?12 +.... C++에서 최대 N 항

<시간/>

이 문제에서는 정수 값 N이 주어집니다. 우리의 임무는 계열 ?3 + ?12 + ... 최대 n항의 합을 찾는 것입니다. .

시리즈는 $\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$

입니다.

즉. 제곱근의 연속입니다.

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

Input : N = 3
Output : 10.3922

설명 -

$\sqrt3 + \sqrt12 + \sqrt27 =1.7320 + 3.4641 + 5.1961 =10.3922$

해결 방법

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

시리즈는,

$\sqrt3 + \sqrt12 + \sqrt27 + \sqrt48 + ...$

여기에 모든 용어에서 공통 $\sqrt3$가 있습니다. 우리가 일반적으로 가지고 있는 것처럼,

$\Rightarrow\:\sqrt{3}(\sqrt{1}\:+\:\sqrt{4}\:+\:\sqrt{9} \:+\:\sqrt{16}\:+\ :\dotsm)$

$\Rightarrow\:\sqrt{3}(1\:+\:2\:+\:3\:+\:4+\:\dotsm)$

따라서 일반 용어는,

$\mathrm{T_n\:=\:n*\sqrt{3}}$

이것을 사용하여 급수의 n항까지 합을 구할 수 있습니다.

$\mathrm{Sum}\:=\:\sum{n}^*\sqrt{3}$

$\mathrm{Sum}\:=\:\sqrt{3}^*\sum{n}$

$\mathrm{Sum}\:=\:(\sqrt{3})^*(n^*(n+1))/2-n$

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

#include<iostream>
#include<math.h>
using namespace std;
float calcSumNTerms(float n) {
   return ((sqrt(3)) * ((n*(n+1))/2));
}
int main() {
   float n = 25;
   cout<<"The sum of series upto n terms is "<<calcSumNTerms(n);
   return 0;
}

출력

The sum of series upto n terms is 562.917