इस समस्या में, हमें दो पूर्णांक मान a और b दिए गए हैं। और हमारा काम है a से b तक की बिटवाइज और (&) रेंज का पता लगाना . इसका मतलब है कि हमें a &a+1 &a+2 &… b-1 &b का मान निकालना होगा।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - ए =3 , बी =8
आउटपुट - 0
स्पष्टीकरण - 3 और 4 और 5 और 6 और 7 और 8 =0
समस्या को हल करने के लिए, एक सरल समाधान है a से शुरू करना और बिटवाइज़ और सभी संख्याओं को एक से b तक बढ़ाना।
अधिक प्रभावी समाधान,
यह एक अधिक प्रभावी उपाय है, इसका उपयोग करके किया जा सकता है -
चरण1 - फ्लिप एलएसबी ऑफ बी.
चरण2 - संख्या की तुलना a और b से करें, जांचें कि क्या यह श्रेणी में है,
चरण 2.1 - यदि संख्या एक फ्लिप से अधिक है तो इसका एलएसबी लाभ होता है।
चरण 2.2 - यदि यह एक से अधिक नहीं है तो संख्या =परिणाम।
अब, चलो काम करने में उपरोक्त एल्गोरिथम देखें -
उदाहरण - ए =3 और बी =8.
समाधान -
चरण1 -बी =8 (1000), एलएसबी फ्लिपिंग जो संख्या में केवल एक है। संख्या 0000 हो जाती है यानी 0
चरण2 - 0 3 से कम है, 0 परिणाम है।
उदाहरण
अब, समस्या को हल करने के लिए कोड देखते हैं,
#include <stdio.h> int main(){ long a, b; a = 3; b = 8; do{ b -= (b & -b); }while(a < b); printf("%li", b); }
आउटपुट
0