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