n নিবন্ধ, প্রথমে, আমাদের একটি রঙিন ত্রিভুজ আঁকতে হবে। আমাদের একটি রঙহীন ত্রিভুজ নিতে হবে এবং ত্রিভুজটিকে চারটি ছোট সমবাহুতে ভাগ করতে হবে। একই ক্ষেত্রফল সহ ত্রিভুজ এবং এটি nম ধাপ পর্যন্ত করতে থাকুন এবং চিত্রে উপস্থিত সমবাহু ত্রিভুজের সংখ্যা খুঁজে বের করুন।
সমাধান খোঁজার পদ্ধতি
এই সমাধানের জন্য দুটি পদ্ধতি রয়েছে এবং সেগুলি হল −
ব্রুট ফোর্স অ্যাপ্রোচ
আমরা লক্ষ্য করতে পারি যে ত্রিভুজের সংখ্যা প্রতি ধাপের পরে কিছু সংখ্যা (3*পূর্ব_সংখ্যা + 2 দ্বারা বৃদ্ধি) বাড়তে থাকে। তাই আমরা n পর্যন্ত একটি লুপ চালাতে পারি এবং ত্রিভুজের সংখ্যা গণনা করতে পারি।
উদাহরণ
#include <iostream> using namespace std; int main() { int n = 2; // number of operations we made int count = 1; // at first we have only one triangle for(int i = 0; i < n; i++) { // looping till n count = 3 * count + 2; // as the triangle count is increasing by 3*prev + 2 } cout <<count << "\n"; }বৃদ্ধি পাচ্ছে
আউটপুট
17
উপরের প্রোগ্রামের সময় জটিলতা হল O(N), যেখানে N হল সঞ্চালিত অপারেশনের সংখ্যা। এখন আমরা এর সময় জটিলতা আরও উন্নত করতে পারি যা আমরা যখন উচ্চ সীমাবদ্ধতার সাথে মোকাবিলা করি তখন খুবই সহায়ক হবে৷
দক্ষ পদ্ধতি
এই পদ্ধতিতে, আমরা একটি সূত্র তৈরি করব যা আমাদের জন্য আমাদের উত্তর গণনা করবে।
উদাহরণ
#include <bits/stdc++.h> using namespace std; int main() { int n = 2; // number of operations we made int count; count = 2 * (pow(3, n)) - 1; // the total number of triangles after nth move cout << count << "\n"; }
আউটপুট
17
উপরের কোডটিতে O(log(N)) এর একটি সময় জটিলতা রয়েছে, যেখানে N হল আমাদের সঞ্চালিত পদক্ষেপের সংখ্যা।
উপরের কোডের ব্যাখ্যা
প্রদত্ত প্রোগ্রামে, আমরা আমাদের প্রদত্ত পদ্ধতির সমাধান করার জন্য সহজভাবে একটি সূত্র তৈরি করছি এবং সূত্রটিতে প্রয়োজনীয় মানগুলি রাখছি এবং ফলাফলটি প্রিন্ট করছি।
উপসংহার
এই নিবন্ধটি কিছু পর্যবেক্ষণ এবং কিছু গণিত প্রয়োগ করে N সরানোর পরে ত্রিভুজের সংখ্যা খুঁজে পায়। আমরা এই সমস্যার জন্য C++ প্রোগ্রাম এবং সম্পূর্ণ পদ্ধতি (সাধারণ এবং দক্ষ) শিখেছি যার মাধ্যমে আমরা এই সমস্যার সমাধান করেছি।
আমরা অন্যান্য ভাষা যেমন সি, জাভা, পাইথন এবং অন্যান্য ভাষায় একই প্রোগ্রাম লিখতে পারি। আমরা আশা করি আপনি এই নিবন্ধটি সহায়ক বলে মনে করেন৷