Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> C++

C++ में किसी संख्या के द्विआधारी प्रतिनिधित्व में लगातार 1s लंबाई>=n खोजें


मान लीजिए, हमारे पास दो पूर्णांक x और n हैं, हमारा कार्य 1s (32-बिट बाइनरी) की पहली क्रमागत धारा की खोज करना है जो n के मान से अधिक या उसके बराबर है लंबाई में और अपनी स्थिति वापस कर दें। यदि ऐसी कोई स्ट्रिंग मौजूद नहीं है, तो -1 लौटाएं। उदाहरण के लिए, यदि x =35, और n =2, तो परिणाम 31 होगा। 32-बिट पूर्णांक में 35 का द्विआधारी प्रतिनिधित्व इस प्रकार है -

000000000000000000000000100111. तो सूचकांक 31 पर लगातार दो 1s मौजूद हैं, इसलिए उत्तर 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. सी ++ अन्य की शक्तियों में एक संख्या का प्रतिनिधित्व

    किसी संख्या को दूसरी संख्या के घात में निरूपित करने की समस्या की विवेचना कीजिए। हमें दो नंबर दिए गए हैं, x और y। हमें यह बताने की जरूरत है कि क्या y को x की घात में दर्शाया जा सकता है, जहां x की प्रत्येक घात का एक बार उपयोग किया जा सकता है, उदाहरण के लिए Input: x = 4, y = 11 Output: true Explanation

  1. आधार B में अनुगामी शून्यों की संख्या ज्ञात कीजिए जो N का प्रतिनिधित्व करते हैं! सी ++ का उपयोग करना

    इस लेख में, हम किसी दी गई संख्या N के अनुगामी शून्य को उसके भाज्य के आधार B निरूपण में खोजने की समस्या को समझेंगे। उदाहरण के लिए Input : N = 7 Base = 2 Output : 4 Explanation : fact(7) = 5040 in base10 and 1001110110000 in base16 having 4 trailing zero. Input : N = 11 Base = 5 Output : 2 Explanatio

  1. N के आधार 16 निरूपण में अनुगामी शून्यों की संख्या ज्ञात कीजिए! सी ++ का उपयोग करना

    इस लेख में, हम उदाहरण के लिए इसके भाज्य के आधार 16 निरूपण में दी गई संख्या N के अनुगामी शून्यों को खोजने की समस्या को समझेंगे Input : N = 7 Output : 1 Explanation : fact(7) = 5040 in base10 and 13B0 in base16 having 1 trailing zero. Input : N = 11 Output : 2 Explanation : fact(11) = 39916800 in bas