এই আর্টিকেলে, প্রথমে আমাদের একটি রঙিন ত্রিভুজ আঁকতে হবে। আমরা একটি অরঙিন ত্রিভুজ নেব এবং এটিকে চারটি ছোট সমবাহু ত্রিভুজে ভাগ করব। সমান আয়তনের এই ত্রিভুজগুলোতে একই প্রক্রিয়া n-তম ধাপ পর্যন্ত চালিয়ে যাব এবং আকৃতিতে মোট কতগুলো সমবাহু ত্রিভুজ আছে তা বের করব।
এই সমাধানের দুটি পদ্ধতি রয়েছে −
আমরা পর্যবেক্ষণ করতে পারি যে প্রতিটি ধাপে ত্রিভুজের সংখ্যা একটি নির্দিষ্ট নিয়মে বেড়ে (৩ × পূর্ববর্তী_সংখ্যা + ২)। তাই আমরা n পর্যন্ত লুপ চালিয়ে ত্রিভুজের সংখ্যা গণনা করতে পারি।
#include <iostream> using namespace std; int main() { int n = 2; // অপারেশন সংখ্যা int count = 1; // শুরুতে শুধু একটি ত্রিভুজ for(int i = 0; i < n; i++) { // n পর্যন্ত লুপ count = 3 * count + 2; // ৩ × পূর্ববর্তী + ২ } cout << count << "\n"; }
17
উপরোক্ত প্রোগ্রামটির টাইম কমপ্লেক্সিটি O(N), যেখানে N হলো অপারেশন সংখ্যা। এখন আমরা এর টাইম কমপ্লেক্সিটি আরও উন্নত করতে পারি যা উচ্চ কনস্ট্রেইন্টের জন্য খুব সহায়ক হবে।
এই পদ্ধতিতে, আমরা একটি সূত্র তৈরি করব যা সরাসরি উত্তর দেবে।
#include <bits/stdc++.h> using namespace std; int main() { int n = 2; // অপারেশন সংখ্যা int count; count = 2 * (pow(3, n)) - 1; // n-তম চলে মোট ত্রিভুজ cout << count << "\n"; }
17
উপরোক্ত কোডটির টাইম কমপ্লেক্সিটি O(log N), যেখানে N হলো চলে সংখ্যা।
দেওয়া প্রোগ্রামে, আমরা বسطে প্রক্রিয়া থেকে একটি সূত্র তৈরি করেছি এবং প্রয়োজনীয় মানগুলো সূত্রে বসিয়ে ফলাফল প্রিন্ট করেছি।
এই আর্টিকেলে আমরা কিছু পর্যবেক্ষণ এবং গণিত প্রয়োগ করে N চলে পর ত্রিভুজের সংখ্যা বের করেছি। আমরা এই সমস্যার C++ প্রোগ্রাম এবং দুটি পদ্ধতি (সহজ ও দক্ষ) দেখেছি। একই প্রোগ্রাম C, Java, Python ইত্যাদি ভাষায়ও লিখা যায়। আশা করি আপনি এই আর্টিকেলটি সহায়ক পাবেন।