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