কম্পিউটার

C++ এ একটি সংখ্যার বাইনারি উপস্থাপনায় দৈর্ঘ্যের পরপর 1s>=n খুঁজুন


ধরুন, আমাদের দুটি পূর্ণসংখ্যা x এবং n আছে, আমাদের কাজ হল 1s (32-বিট বাইনারি) এর প্রথম ধারাবাহিক স্ট্রীম অনুসন্ধান করা যা n-এর মানের থেকে বড় বা সমান। দৈর্ঘ্য এবং তার অবস্থান ফিরে. যদি এই ধরনের কোন স্ট্রিং বিদ্যমান না থাকে, তাহলে -1 রিটার্ন করুন। উদাহরণস্বরূপ, যদি x =35, এবং n =2, তাহলে ফলাফল হবে 31। একটি 32-বিট পূর্ণসংখ্যাতে 35-এর বাইনারি উপস্থাপনা হল −

0000000000000000000000000100011। তাই পরপর দুটি 1s সূচী 31 এ উপস্থিত, তাই উত্তর হল 31।

এই সমস্যাটি সমাধান করার জন্য, আমাদের অগ্রণী শূন্যের সংখ্যা খুঁজে বের করতে হবে এবং সেই গণনা থেকে আমরা পরপর 1s বের করার চেষ্টা করব। আরো ভালো ধারণা পেতে উদাহরণটি দেখি।

উদাহরণ

#include<iostream>
using namespace std;
int leadingZeroCount(int x) {
   unsigned y;
   int n;
   n = 32;
   for(int i = 16; i > 1; i = i/2 ){
      y = x >> i;
      if(y != 0){
         n -= i;
         x = y;
      }
   }
   y = x >> 1;
   if (y != 0)
      return n - 2;
   return n - x;
}
int consecutiveOnePosition(unsigned x, int n) {
   int k, p;
   p = 0;
   while (x != 0) {
      k = leadingZeroCount(x);
      x = x << k;
      p = p + k;
      k = leadingZeroCount(~x);
      if (k >= n)
         return p + 1;
      x = x << k;
      p = p + k;
   }
   return -1;
}
int main() {
   int x = 35;
   int n = 2;
   cout << "Consecutive 1s of length " << n << " is starting from index: " << consecutiveOnePosition(x, n);
}

আউটপুট

Consecutive 1s of length 2 is starting from index: 31

  1. C++ এ বাইনারি উপস্থাপনায় k-th বিটের মান খুঁজুন

  2. অন্যদের ক্ষমতায় একটি সংখ্যার C++ প্রতিনিধিত্ব

  3. N-এর ভিত্তি B প্রতিনিধিত্বে অনুগামী শূন্যের সংখ্যা খুঁজুন! C++ ব্যবহার করে

  4. বেস 16 N এর প্রতিনিধিত্বে অনুগামী শূন্যের সংখ্যা খুঁজুন! C++ ব্যবহার করে