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

C++ में समान सेट बिट्स के साथ अगली बड़ी संख्या


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

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

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

इनपुट

124

आउटपुट

143

एल्गोरिदम

  • संख्या 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 == getSetBitsCount(i)) { 
            return i; 
        } 
        i += 1; 
    } 
} 

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

आउटपुट

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

143

  1. - C++ में सेट बिट्स की संख्या के अनुसार ऐरे सॉर्ट करें

    यहां हम सेट-बिट्स के आधार पर ऐरे को सॉर्ट करने की एक दिलचस्प समस्या देखेंगे। जब ऐरे में किसी एलिमेंट में अधिक सेट-बिट्स होते हैं, तो उसे उस एलिमेंट से पहले रखा जाएगा जिसमें कम सेट बिट्स होते हैं। मान लीजिए कुछ नंबर्स हैं 12, 15, 7। तो सेट बिट्स मूल रूप से उनके बाइनरी प्रतिनिधित्व में 1s की संख्या है

  1. - C++ में k सेट बिट्स के साथ नंबर को अधिकतम करने के लिए न्यूनतम फ्लिप्स

    समस्या कथनदो नंबर n और k दिए गए हैं, हमें दिए गए नंबर को उसके बिट्स फ्लिप करके अधिकतम करने के लिए आवश्यक न्यूनतम फ्लिप्स की संख्या ढूंढनी है जैसे कि परिणामी नंबर में ठीक k सेट बिट्स हों। कृपया ध्यान दें कि इनपुट को कंडीशन पूरी करनी चाहिए कि k, n में बिट्स की संख्या से कम हो।उदाहरणमान लीजिए n = 9 और

  1. - पायथन में समान सेट बिट्स वाली अगली बड़ी संख्या ढूंढने का प्रोग्राम

    एक संख्या n दी गई है। n से बड़ी सबसे छोटी संख्या ढूंढें जिसमें n के बराबर सेट बिट्स (1s) हों। उदाहरण इनपुट: n = 7 (बाइनरी: 0111) आउटपुट: 11 (बाइनरी: 1011) दोनों में तीन 1s हैं। एल्गोरिदम (बिट मैनिपुलेशन) copy = n, zeros = 0, ones = 0। अंतिम 0s गिनें: जब तक copy सम है और शून्य नहीं, zeros++, = 1।