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