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

C++ का उपयोग करके केवल L-वें और R-वें अनुक्रमणिका के बीच सेट बिट्स वाली संख्या ज्ञात करें

दी गई समस्या में हमें उस संख्या का मान ज्ञात करना होगा जिसमें दी गई श्रेणी L, R के बीच सभी सेट बिट्स हों। उदाहरण के लिए -

Input: L = 1, R = 5
Output: 62
Explanation: representation of given L and R in binary form is 0..0111110

Input: L = 1, R = 4
Output: 30
Explanation: representation of given L and R in binary form is 0..11110

समाधान खोजने के लिए दृष्टिकोण

दी गई समस्या में, हम दो दृष्टिकोणों, जानवर बल और कुशल दृष्टिकोण पर चर्चा करने जा रहे हैं।

क्रूर फ़ोर्स

इस दृष्टिकोण में, हम केवल दी गई सीमा के माध्यम से पार करने जा रहे हैं और दी गई सीमा में 2 की सभी शक्ति जोड़ देंगे, और यही हमारा उत्तर होगा।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int main() {
   int L = 1, R = 3; // the given range
   int ans = 0; // our answer
   for(int i = L; i <= R; i++) // traversing through the whole range
      ans += pow(2, i); // adding values to the answer.
   cout << ans << "\n";
}

आउटपुट

14

इस दृष्टिकोण में, हम केवल सीमा के माध्यम से पार कर रहे हैं और केवल सीमा में 2 संख्याओं की शक्ति जोड़ रहे हैं। इस कार्यक्रम की समय जटिलता O(N) . है , जहां N हमारी सीमा का आकार है। लेकिन हम दिए गए प्रश्न में बिट्स के ज्ञान को लागू करके समय की जटिलता को और बेहतर बना सकते हैं।

कुशल दृष्टिकोण

इस दृष्टिकोण में, हम केवल एक सूत्र बनाएंगे जो हमारे लिए हमारे उत्तर की गणना करेगा।

उदाहरण

#include<bits/stdc++.h>
using namespace std;
int main() {
   int L = 1, R = 3; // the given range
   int ans = 0; // our answer
   for(int i = L; i <= R; i++) // traversing through the whole range
      ans += pow(2, i); // adding values to the answer.
   cout << ans << "\n";
}

आउटपुट

14

इस दृष्टिकोण में, हम अपने उत्तर की गणना के लिए एक सूत्र बनाते हैं।

उपरोक्त कोड की व्याख्या

जैसा कि आप जानते हैं, हमें दी गई सीमा में सेट बिट्स के साथ संख्या की गणना करने की आवश्यकता है, इसलिए इस दृष्टिकोण में, हमें एक संख्या मिलती है, जिसके सभी बिट्स 0 से R तक सेट होते हैं। फिर हमें एक संख्या घटानी होगी जिसमें सभी बिट्स हों 1 से (L-1) तक सेट करें, और इस प्रकार हम इस प्रेक्षण को तैयार करते हैं। दिए गए कोड की समग्र समय जटिलता O(1) . है जो निरंतर समय की जटिलता है जिसका अर्थ है कि हम किसी भी उत्तर की गणना निरंतर समय में कर सकते हैं।

निष्कर्ष

यह लेख "केवल एल-वें और आर-इंडेक्स के बीच सेट बिट्स के साथ संख्या" के लिए एक कार्यक्रम तैयार करेगा। हमने इस समस्या के लिए सी ++ प्रोग्राम और पूर्ण दृष्टिकोण (सामान्य और कुशल) भी सीखा जिसके द्वारा हमने इस समस्या को हल किया। हम उसी प्रोग्राम को अन्य भाषाओं जैसे सी, जावा, पायथन और अन्य भाषाओं में लिख सकते हैं। हमें उम्मीद है कि आपको यह लेख मददगार लगा होगा।


  1. C++ का उपयोग करके दिए गए एक छोर और मध्य के साथ एक पंक्ति के दूसरे छोर का पता लगाएं

    इस समस्या में, हमें एक प्रारंभिक बिंदु A(xA रेखा के दो बिंदुओं के निर्देशांक दिए गए हैं। , वाईए ) और मध्यबिंदु M(xM , वाईएम ) .हमारा काम है एक पंक्ति के दूसरे छोर को एक छोर और मध्य के साथ ढूंढना । समस्या को समझने के लिए एक उदाहरण लेते हैं, इनपुट A = [1, 2], M = [3, 0] आउटपुट [5, -2] स्पष्टीकरण

  1. C++ का उपयोग करके सेट पर रिफ्लेक्सिव रिलेशंस की संख्या ज्ञात करें

    इस लेख में, हम एक सेट पर रिफ्लेक्सिव संबंधों की संख्या को खोजने के तरीकों की व्याख्या करेंगे। इस समस्या में, हमें संख्या n दी गई है, और n प्राकृत संख्याओं के समुच्चय पर, हमें प्रतिवर्ती संबंधों की संख्या निर्धारित करनी होगी। चिंतनशील संबंध − समुच्चय A में एक संबंध प्रतिवर्ती कहलाता है यदि (a, a) R

  1. C++ . का उपयोग करके एक फ़ुटबॉल पर पेंटागन और हेक्सागोन्स की संख्या ज्ञात करें

    जैसा कि हम सभी जानते हैं, पेंटागन और षट्भुज फुटबॉल के समान रूप से आवश्यक अंग हैं। ये आकार एक पूर्ण गोलाकार आकृति बनाने के लिए एक पहेली की तरह एक साथ फिट होते हैं। तो यहाँ हमारे पास एक फ़ुटबॉल है, जिसमें हमें षट्भुज और पेंटागन खोजने हैं। हम समस्या को आसानी से हल करने के लिए यूलर विशेषता का उपयोग क