এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা N দেওয়া আছে। কাজ হল সিরিজ 1, 2, 2, 3, 3, 3, 4…-এ n-তম টার্ম বের করা।
উদাহরণ
ইনপুট
N = 6
আউটপুট
3
ব্যাখ্যা
Nতম টার্ম পর্যন্ত সিরিজ: 1, 2, 2, 3, 3, 3, ...
সমাধানের পদ্ধতি
এই সমস্যা সমাধানের একটি সহজ পদ্ধতি হল নেস্টেড লুপ ব্যবহার করা। আউটার লুপ 1 থেকে n পর্যন্ত। ইনার লুপ 1 থেকে i (আউটারের ইটারেটর) পর্যন্ত। ইনার লুপের প্রতিটি ইটারেশনে সিরিজের এলিমেন্ট কাউন্ট করুন এবং i-এর ভ্যালু রিটার্ন করুন যখন কাউন্ট n-এর সমান হয়।
একটি আরও দক্ষ পদ্ধতি হল প্যাটার্ন পজিশন ব্যবহার করা। সিরিজে এলিমেন্টগুলো এবং তাদের পজিশন:
এলিমেন্ট ১: পজিশন ১ এলিমেন্ট ২: পজিশন ২, ৩ এলিমেন্ট ৩: পজিশন ৪, ৫, ৬ এলিমেন্ট ৪: পজিশন ৭, ৮, ৯, ১০
এই মানগুলো দিয়ে সিরিজের শেষ পজিশন বানানো যায়: 1, 3, 6, 10, 15, 21, 28, …
x উপস্থিত থাকে টার্মে: 1 + 2 + 3 + … + (x-2) + (x-1)...
এটি জেনারালাইজ করা যায়: n = x(x-1)/2
2n = x² - x => x² - x - 2n = 0
দ্বিঘাত সমীকরণের সমাধান সূত্র ব্যবহার করে:
x = ½ × (1 + √(1 + 8n))
প্রোগ্রাম উদাহরণ (দক্ষ পদ্ধতি)
#include <bits/stdc++.h>
using namespace std;
int findNthTerm(int n) {
int x = ((1 + (double)sqrt(1 + 8 * n)) / 2);
return x;
}
int main() {
int n = 12;
cout << "The series is 1, 2, 2, 3, 3, 3, 4, 4, ...\n";
cout << n << "th term of the series is " << findNthTerm(n);
return 0;
}
আউটপুট
The series is 1, 2, 2, 3, 3, 3, 4, 4, ... 12th term of the series is 5