কম্পিউটার

C++ এ একটি সংখ্যার বাইনারি আকারে 1 এর দীর্ঘতম ক্রমাগত রান খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা n আছে, আমাদের এটির বাইনারি উপস্থাপনায় 1s-এর দীর্ঘতম ক্রমাগত রানের দৈর্ঘ্য খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি n =312 এর মত হয়, তাহলে আউটপুট হবে 3, যেহেতু 312 বাইনারিতে 100111000 এবং সেখানে 3টি পরপর 1s আছে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • ret :=0, len :=0

  • আরম্ভ করার জন্য i :=0, যখন i <32, আপডেট করুন (i 1 দ্বারা বাড়ান), করবেন:

    • যদি n/2 বিজোড় হয়, তাহলে

      • (লেন 1 দ্বারা বাড়ান)

    • অন্যথায়

      • len :=0

    • ret :=সর্বোচ্চ ret এবং len

  • রিটার্ন রিটার্ন

আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:

সোর্স কোড (C++) -

উদাহরণ

#include <bits/stdc++.h>
using namespace std;
class Solution {
   public:
   int solve(int n) {
      int ret = 0;
      int len = 0;
      for(int i = 0; i < 32; i++){
         if((n >> i) & 1){
            len++;
         }else{
            len = 0;
         }
         ret = max(ret, len);
      }
      return ret;
   }
};
main(){
   Solution ob;
   cout << ob.solve(312);
}

ইনপুট

312

আউটপুট

3

  1. C++ এ বাইনারি ট্রি দীর্ঘতম ধারাবাহিক ক্রম

  2. অক্টাল নম্বরকে বাইনারি নম্বরে রূপান্তর করতে C++ প্রোগ্রাম

  3. পাইথনে n-এর বাইনারি আকারে 1s-এর দীর্ঘতম একটানা রান খুঁজে বের করার প্রোগ্রাম

  4. পাইথন ব্যবহার করে একটি সংখ্যার বাইনারি আকারে 1s এর দীর্ঘতম দূরত্ব খুঁজে বের করার প্রোগ্রাম