Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> 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. सी ++ में सेट बिट्स की गिनती के अनुसार एक सरणी को क्रमबद्ध करें

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

  1. C++ में k सेट बिट्स के साथ किसी संख्या को अधिकतम करने के लिए आवश्यक न्यूनतम फ़्लिप।

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

  1. पायथन में n के समान सेट बिट्स के साथ उच्च संख्या खोजने का कार्यक्रम?

    मान लीजिए हमारे पास एक संख्या n है; हमें बाइनरी रूप में n के समान संख्या 1s के साथ सबसे छोटी अगली उच्च संख्या ज्ञात करनी होगी। इसलिए, यदि इनपुट n =7 जैसा है, तो आउटपुट 11 होगा, क्योंकि बाइनरी में 7 0111 है और तीन के साथ 7 से अगला उच्च 11 होगा जो बाइनरी में 1011 है। इसे हल करने के लिए, हम इन चरणों