এই সমস্যায়, আমাদের একটি সংখ্যা n দেওয়া আছে। আমাদের কাজ হল সিরিজ 1 + (1+2) + (1+2+3) + (1+2+3+4) + … + (1+2+3+4+...+n) এর যোগফল বের করার একটি প্রোগ্রাম তৈরি করা।
উদাহরণ দিয়ে বোঝা যাক
ইনপুট
n = 4
আউটপুট
20
ব্যাখ্যা - (1) + (1+2) + (1+2+3) + (1+2+3+4) = 20
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল দুটি লুপ ব্যবহার করে সিরিজ তৈরি করা।
আলগরিদম
যোগফল = 0 আরম্ভ করুন
ধাপ ১: i = 1 থেকে n পর্যন্ত লুপ। অর্থাৎ i = 1 to i <= n।
ধাপ ১.১: j = 1 থেকে i পর্যন্ত লুপ। অর্থাৎ j = 1 to j <= i।
ধাপ ১.১.১: যোগফল আপডেট করুন। অর্থাৎ sum += j।
ধাপ ২: যোগফল ফেরত দিন।
C++ প্রোগ্রাম উদাহরণ (নেস্টেড লুপ পদ্ধতি)
#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
int sum = 0;
for (int i = 1 ; i <= n ; i++)
for (int j = 1 ; j <= i ; j++)
sum += j;
return sum;
}
int main() {
int n = 7;
cout<<"Sum of the series 1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+"<<n<<") is "<<calcSeriesSum(n);
return 0;
}
আউটপুট
Sum of the series 1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+7) is 84
কিন্তু এই পদ্ধতিটি দক্ষ নয়।
দক্ষ সমাধান: সাধারণ ফর্মুলা
যোগফল = 1 + (1+2) + (1+2+3) + (1+2+3+4) … যোগফল = Σ ( (1+2+3+4+5+...) ) যোগফল = Σ ( n(n+1)/2) যোগফল = ½ Σ ( n² + n) = ½ ( Σ(n²) + Σ n) যোগফল = ½ [ (n(n+1)(2n+1))/6 ) + ½ ( n(n+1)/2 ] যোগফল = ½ [ (n(n+1))/2 ( (2n+1)/3 + 1) ] যোগফল = ½ [ ((n(n+1))/2) * (2n + 4)/3 ] যোগফল = ½ [ (n(n+1)(2n+4))/6] যোগফল = (n(n + 1)(2n + 4))/12
C++ প্রোগ্রাম উদাহরণ (ফর্মুলা পদ্ধতি)
#include <iostream>
using namespace std;
int calcSeriesSum(int n) {
return (n*(n + 1)*(2*n + 4))/12;
}
int main() {
int n = 7;
cout<<"Sum of the series 1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+"<<n<<") is "<<calcSeriesSum(n);
}
আউটপুট
Sum of the series 1 + (1+2) + (1+2+3) + (1+2+3+4) + ... + (1+2+3+4+...+7) is 84