এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যার মান দেওয়া হয়েছে। আমাদের কাজ হল সিরিজের যোগফল ?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