हमें एक धनात्मक पूर्णांक N दिया गया है। लक्ष्य N से कम या उसके बराबर संख्याओं को गिनना है जिनके द्विआधारी प्रतिनिधित्व में सभी 1 हैं। उदाहरण के लिए 1, 1, 3, 11, 7, 111, 15, 1111... इत्यादि।
यदि हम संख्याएँ देखें तो वे सभी 2i-1 हैं। जहां से मैं 1 से शुरू करता हूं। n से कम ऐसे नंबरों की जांच करने के लिए। हम तुलना करेंगे यदि 2i-1<=n. फिर इंक्रीमेंट काउंट।
आइए उदाहरणों से समझते हैं।
इनपुट -एन=15
आउटपुट − वह संख्या जिसमें सभी 1 बाइनरी में हों :4
स्पष्टीकरण − समान अभाज्य संख्याओं के योग के रूप में संख्याएं − संख्याएं 1 3 7 15
. होंगीइनपुट -एन=50
आउटपुट − वह संख्या जिसमें सभी 1 बाइनरी में हों :5
स्पष्टीकरण - समान अभाज्य संख्याओं के योग के रूप में संख्याएँ -
नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है
-
हम एक धनात्मक पूर्णांक N लेते हैं..
-
फंक्शन allOnes(int n) इनपुट के रूप में n लेता है और उन नंबरों को लौटाता है जिनमें सभी 1 बाइनरी प्रतिनिधित्व में हैं।
-
ऐसी संख्याओं के लिए प्रारंभिक चर गणना को 0 के रूप में लें..
-
लूप के लिए i=1 से i<=n तक ट्रैवर्स करें।
-
प्रत्येक i के लिए, यदि pow(2,i)-1, n से कम या उसके बराबर है। वेतन वृद्धि की संख्या।
-
परिणाम के रूप में लूप के अंत में गिनती लौटाएं।
उदाहरण
#include <bits/stdc++.h> using namespace std; int allOnes(int n){ int count = 0; for(int i=1;i<=n;i++){ if(n>=pow(2,i)-1){ count++; //cout<<" "<<pow(2,i)-1; } } return count; } int main(){ int N=23; cout <<endl<< "Number having all 1's in binary : "<<allOnes(N); return 0; }
आउटपुट
यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -
Number having all 1's in binary : 4