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

C++ में एक अधिक सेट बिट वाला अगला बड़ा पूर्णांक


हमें एक संख्या n दी गई है, हमें वह संख्या ज्ञात करनी है जो n से बड़ी है और जिसमें n के बाइनरी प्रतिनिधित्व से एक अधिक सेट बिट है।

बाइनरी प्रतिनिधित्व में अंक 1 को सेट बिट कहा जाता है।

आइए एक उदाहरण देखते हैं।

इनपुट

124

आउटपुट

125

एल्गोरिदम

  • संख्या n आरंभ करें।
  • सेट बिट्स की संख्या की गणना प्राप्त करने के लिए एक फ़ंक्शन लिखें।
  • पुनरावृत्ति वेरिएबल को n + 1 के साथ आरंभ करें।
  • एक अनंत लूप लिखें।
    • n से बड़ी संख्याओं के लिए सेट बिट्स की जांच करें।
    • जब आप इसे ढूंढ लें तो संख्या वापस करें।

कार्यान्वयन

निम्नलिखित C++ में उपरोक्त एल्गोरिदम का कार्यान्वयन है:

#include <bits/stdc++.h> 
using namespace std; 

int getSetBitsCount(int n) { 
    int count = 0; 
    while (n) { 
        if (n % 2 == 1) { 
            count += 1; 
        } 
        n /= 2; 
    } 
    return count; 
} 

int getNextGreaterElementWithSameSetBits(int n) { 
    int setBitsCount = getSetBitsCount(n); 
    int i = n + 1; 
    while (true) { 
        if (setBitsCount + 1 == getSetBitsCount(i)) { 
            return i; 
        } 
        i += 1; 
    } 
} 

int main() { 
    int n = 124; 
    cout << getNextGreaterElementWithSameSetBits(n) << endl; 
    return 0; 
}

आउटपुट

यदि आप उपरोक्त कोड चलाते हैं, तो आपको निम्नलिखित परिणाम मिलेगा।

125

  1. - C++ में दी गई संख्या के सेट बिट्स का उपयोग करके न्यूनतम संख्या

    समस्या कथनएक अनसाइन्ड संख्या दी गई है, दी गई अनसाइन्ड संख्या के बिट्स का उपयोग करके बनाई जा सकने वाली न्यूनतम संख्या ज्ञात करें।उदाहरणयदि इनपुट = 10 तो उत्तर 3 होगा10 का बाइनरी प्रतिनिधित्व 1010 है और 2 सेट बिट्स के साथ न्यूनतम संख्या 0011 यानी 3 हैएल्गोरिदम1. सेट बिट्स की संख्या गिनें। 2. (सेट बिट्

  1. - C++ में जांचें कि संख्या के बिट्स वैकल्पिक पैटर्न में हैं या नहीं - सेट 1

    आइए मान लें हमारे पास एक पूर्णांक n है। समस्या यह जांचना है कि क्या इस पूर्णांक के बाइनरी समकक्ष में वैकल्पिक पैटर्न हैं या नहीं। वैकल्पिक पैटर्न का अर्थ है 101010...।दृष्टिकोण ऐसा है: बाइनरी समकक्ष का उपयोग करके प्रत्येक अंक की जांच करें, और यदि दो लगातार समान हैं, तो फाल्स लौटाएं, अन्यथा सत्य।उदाह

  1. - C++ में इंटीजर का वन्स कॉम्प्लीमेंट खोजें

    इस सेक्शन में, हम देखेंगे कि इंटीजर का 1s कॉम्प्लीमेंट कैसे खोजें। हम कॉम्प्लीमेंट ऑपरेटर का उपयोग करके यह कार्य बहुत तेजी से कर सकते हैं, लेकिन यह 32-बिट कॉम्प्लीमेंटेड वैल्यू बनाएगा (4-बाइट इंटीजर)। यहां हम n-बिट नंबर्स का कॉम्प्लीमेंट चाहते हैं।मान लीजिए हमारे पास एक नंबर है जैसे 22। इसका बाइनरी