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