এই সমস্যায়, আমাদের একটি পূর্ণসংখ্যা N দেওয়া হয়েছে। কাজটি হল 1 2 2 3 3 3 4 ….
সমস্যাটি বোঝার জন্য একটি উদাহরণ নেওয়া যাক,
ইনপুট
N = 6
আউটপুট
3
ব্যাখ্যা
নবম মেয়াদ পর্যন্ত সিরিজ হল 1, 2, 2, 3, 3, 3, ...
সমাধান পদ্ধতি
সমস্যা সমাধানের একটি সহজ পদ্ধতি হল একটি নেস্টেড লুপ ব্যবহার করে। লুপের বাইরেরটি 1 থেকে n পর্যন্ত। এবং ভিতরের লুপ হল 1 থেকে i (বাইরের লুপের পুনরাবৃত্তিকারী)। অভ্যন্তরীণ লুপে প্রতিটি পুনরাবৃত্তির জন্য, সিরিজের উপাদানের সংখ্যা গণনা করুন এবং গণনা n এর সমান হলে i এর মান ফেরত দিন।
সমস্যা সমাধানের জন্য আরও দক্ষ পদ্ধতি হল প্যাটার্ন পজিশন ব্যবহার করা। ক্রমটির উপাদানগুলি সিরিজে তাদের অবস্থান সহ −
Element 1: position 1 Element 2: position 2, 3 Element 3: position 4, 5, 6 Element 4: position 7, 8, 9, 10
এই মানগুলির জন্য, আমরা সিরিজের উপাদানটির শেষ অবস্থানটি ব্যবহার করে একটি সিরিজ তৈরি করতে পারি যা হল,
1, 3, 6, 10, 15, 21, 28, ….
x পদে প্রদর্শিত হয়, 1 + 2 + 3 + … + (x-2) + (x-1)...
এটিকে n =x*(x-1)/2
হিসাবে সাধারণীকরণ করা যেতে পারে2n =x 2 - x => x 2 - x - 2n =0
দ্বিঘাত সমীকরণের সমাধানের সূত্র ব্যবহার করে সমীকরণটি সমাধান করুন,
$$x=1/2*(1+\sqrt{1+8*n)}$$
আমাদের সমাধানের কাজ চিত্রিত করার জন্য প্রোগ্রাম,
উদাহরণ
#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