কম্পিউটার

C++ এ N থেকে M-এ পৌঁছানোর ন্যূনতম সংখ্যক ধাপ খুঁজুন


ধরুন আমাদের দুটি পূর্ণসংখ্যা N এবং M আছে। প্রদত্ত ক্রিয়াকলাপ সম্পাদন করে N থেকে M-এ পৌঁছানোর জন্য আমাদের ন্যূনতম সংখ্যক ধাপ খুঁজে বের করতে হবে -

  • সংখ্যা x কে 2 দ্বারা গুণ করুন, তাহলে x হবে 2*x
  • সংখ্যা x থেকে একটি বিয়োগ করুন, তাহলে সংখ্যাটি হবে x – 1

যদি N =4 এবং M =6 হয়, তাহলে আউটপুট হবে 2। সুতরাং যদি আমরা N-তে 2 নম্বর অপারেশন করি, তাহলে N হবে 3, তারপর N-এর আপডেটেড মানের উপর এক নম্বর অপারেশন সম্পাদন করুন, সুতরাং এটি 2 * 3 =6 হবে। সুতরাং পদক্ষেপের সর্বনিম্ন সংখ্যা হবে 2।

এই সমস্যা সমাধানের জন্য, আমরা এই নিয়মগুলি অনুসরণ করব -

  • আমরা সমস্যাটি বিপরীত করতে পারি, যেমন আমরা N সংখ্যাটি M থেকে শুরু করে নিই, তাই নতুন দুটি অপারেশন হবে

    • সংখ্যাটিকে 2 দ্বারা ভাগ করুন, যখন এটি জোড় হয়,
    • সংখ্যার সাথে 1 যোগ করুন
  • এখন অপারেশনের সর্বনিম্ন সংখ্যা হবে
    • যদি N> M, তাদের মধ্যে পার্থক্য ফেরত দিন, তাই ধাপের সংখ্যা M-এর সাথে 1 যোগ করা হবে, যতক্ষণ না এটি N-এর সমান হয়
    • অন্যথায় যখন N

উদাহরণ

#include<iostream>
using namespace std;
int countMinimumSteps(int n, int m) {
   int count = 0;
   while(m > n) {
      if(m % 2 == 1) {
         m++;
         count++;
      }
      m /= 2;
      count++;
   }
   return count + n - m;
}
int main() {
   int n = 4, m = 6;
   cout << "Minimum number of operations required: " << countMinimumSteps(n, m);
}

আউটপুট

Minimum number of operations required: 2

  1. C++ ব্যবহার করে একটি স্ট্রিং এর সাবস্ট্রিং এর সংখ্যা খুঁজুন

  2. C++ ব্যবহার করে স্টপিং স্টেশনের সংখ্যা খুঁজুন

  3. C++ ব্যবহার করে প্রদত্ত বিন্দু থেকে সম্ভাব্য চতুর্ভুজের সংখ্যা নির্ণয় করুন

  4. C++ এ প্রতিপক্ষকে ধরার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক ধাপ খুঁজে বের করার প্রোগ্রাম