हमें एक संख्या 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