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

C++ . में [0, n] की सीमा में केवल 1 सेट बिट वाली संख्याओं की संख्या

हमें एक संख्या दी गई है और कार्य 0 से लेकर दी गई संख्या तक संख्याओं की गणना करना है, मान लें कि संख्या बिल्कुल एक सेट बिट है

बाइनरी संख्या में सेट बिट्स को 1 द्वारा दर्शाया जाता है। जब भी हम किसी पूर्णांक मान की बाइनरी संख्या की गणना करते हैं तो यह 0 और 1 के संयोजन के रूप में बनता है। तो, अंक 1 को कंप्यूटर के संदर्भ में सेट बिट के रूप में जाना जाता है।

इनपुट - इंट संख्या =15

आउटपुट − [0, 15] की सीमा में केवल 1 सेट बिट वाली संख्याओं की संख्या है − 4

स्पष्टीकरण - दी गई संख्या 15 है इसलिए परिसर 0-15 है। अब 4 अंकों की गणना करें

. के लिए द्विआधारी संख्या

0 -> 0000 =0 सेट बिट, 1 -> 0001 =1 सेट बिट, 2 -> 0010 =1 सेट बिट, 3 -> 0011 =2 सेट बिट, 4 -> 0100 =1 सेट बिट, 5 -> 0101 =2 सेट बिट, 6 -> 0110 =2 सेट बिट, 7 -> 0111 =3 सेट बिट, 8 -> 1000 =1 सेट बिट, 1 -> 1001 =2 सेट बिट, 10 -> 1010 =2 सेट बिट, 11 -> 1011 =3 सेट बिट, 12 -> 1100 =2 सेट बिट, 13 -> 1101 =3 सेट बिट, 14 -> 1110 =3 सेट बिट, 15 -> 1111 =4 सेट बिट। अब, हम ठीक एक सेट बिट्स वाली संख्याओं का चयन करेंगे और वे 1, 2, 4 और 8 हैं।

इनपुट - इंट संख्या =4

आउटपुट − [0, 15] की सीमा में केवल 1 सेट बिट वाली संख्याओं की संख्या − 3

. है

स्पष्टीकरण - दी गई संख्या 4 है इसलिए परिसर 0-4 है। अब 4 अंकों की बाइनरी की गणना करें

. के लिए नंबर

0 -> 0000 =0 सेट बिट, 1 -> 0001 =1 सेट बिट, 2 -> 0010 =1 सेट बिट, 3 -> 0011 =2 सेट बिट, 4 -> 0100 =1 सेट बिट। अब, हम ठीक एक सेट बिट्स वाली संख्याओं का चयन करेंगे और वे 1, 2 और 4 हैं।

नीचे दिए गए प्रोग्राम में इस्तेमाल किया गया तरीका इस प्रकार है

दी गई समस्या को हल करने के लिए कई दृष्टिकोण हो सकते हैं जैसे कि सरल दृष्टिकोण और कुशल दृष्टिकोण। तो आइए सबसे पहले भोले दृष्टिकोण . को देखें ।

  • नंबर दर्ज करें और इसे आगे की प्रक्रिया के लिए फ़ंक्शन में पास करें।

  • श्रेणी में संख्याओं की संख्या को ठीक 1 के रूप में सेट बिट के साथ संग्रहीत करने के लिए एक अस्थायी चर गणना लें

  • I से 1 तक की संख्या तक के लिए लूप प्रारंभ करें

  • लूप के अंदर, '__builtin_popcount(i)' के साथ एक अस्थायी चर सेट करें, वह फ़ंक्शन जो सेट बिट्स की संख्या देता है।

  • IF temp =1 जांचें, फिर गिनती बढ़ाएं

  • वापसी की संख्या

  • प्रिंट परिणाम

कुशल तरीका

  • नंबर दर्ज करें और इसे आगे की प्रक्रिया के लिए फ़ंक्शन में पास करें।

  • श्रेणी में संख्याओं की संख्या को ठीक 1 के रूप में सेट बिट के साथ संग्रहीत करने के लिए एक अस्थायी चर गणना लें

  • लूप प्रारंभ करें जबकि अस्थायी से अस्थायी <=संख्या

    . तक
  • लूप के अंदर, गिनती को 1 से बढ़ाएं और अस्थायी को अस्थायी * 2 के रूप में सेट करें

  • वापसी की संख्या

  • प्रिंट परिणाम

उदाहरण (बेवकूफ दृष्टिकोण)

#include <iostream>
using namespace std;
//function to Count of numbers having only 1 set bit in the range [0, n]
int set_bits(int number){
   int count = 0;
   for (int i = 1; i <= number; i++){
      int temp = __builtin_popcount(i);
      if (temp == 1){
         count++;
      }
   }
   return count;
}
int main(){
   int number = 15;
   cout<<"Count of numbers having only 1 set bit in the range [0, "<<number<<"] are: "<<set_bits(number);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of numbers having only 1 set bit in the range [0, 15] are: 4

उदाहरण (कुशल दृष्टिकोण)

#include <iostream>
using namespace std;
//function to Count of numbers having only 1 set bit in the range [0, n]
int set_bits(int number){
   int count = 0;
   int temp = 1;
   while(temp <= number){
      count++;
      temp = temp *2;
   }
   return count;
}
int main(){
   int number = 15;
   cout<<"Count of numbers having only 1 set bit in the range [0, "<<number<<"] are: "<<set_bits(number);
   return 0;
}

आउटपुट

यदि हम उपरोक्त कोड चलाते हैं तो यह निम्न आउटपुट उत्पन्न करेगा -

Count of numbers having only 1 set bit in the range [0, 15] are: 4

  1. C++ में दी गई श्रेणी में भाज्य संख्याओं की गणना करें

    हमें एक चर द्वारा धारित पूर्णांक मान से शुरू होने वाली श्रेणी दी गई है, मान लीजिए कि चर अंत तक शुरू होता है और कार्य दी गई सीमा में उपलब्ध भाज्य संख्याओं की कुल संख्या की गणना करना है। फैक्टोरियल नंबर क्या है किसी संख्या के भाज्य की गणना अंकों के अंकों को 1 से घटाते हुए अंकों को गुणा करके की जाती ह

  1. C++ में K के रूप में सबसे छोटे कारक वाले श्रेणी में सभी संख्याओं की गणना करें

    इस ट्यूटोरियल में, हम K के रूप में सबसे छोटे कारक के साथ एक श्रेणी में संख्याओं को खोजने के लिए एक प्रोग्राम पर चर्चा करेंगे। इसके लिए हमें एक रेंज [ए, बी] प्रदान की जाएगी। हमारा काम दी गई श्रेणी में उन संख्याओं को गिनना है जिनका सबसे छोटा गुणनखंड K है। उदाहरण #include <bits/stdc++.h> using n

  1. केवल अंक 3 और 4 का उपयोग करके बनाई जा सकने वाली संख्याओं की संख्या ज्ञात कीजिए और जिनकी लंबाई C++ में अधिकतम N है

    एक संख्या N दी गई है। हमें ऐसी संख्याओं की संख्या ज्ञात करनी है जो अंक 3 और 4 का उपयोग करके बनाई जा सकती हैं। इसलिए यदि N =6 है, तो संख्याएँ 3, 4, 33, 34, 43, 44 होंगी। हम इस समस्या को हल कर सकते हैं यदि हम बारीकी से देखते हैं, एकल अंक संख्या के लिए इसमें 2 संख्याएं 3 और 4 हैं, अंक 2 के लिए, इसमें