समस्या विवरण
एक धनात्मक संख्या और बिट्स की रेंज दी गई है। हमारा कार्य उस रेंज में अनसेट बिट्स (0) की संख्या गिनना है।
उदाहरण
इनपुट: n = 50, प्रारंभिक पता = 2, अंतिम पता = 5
आउटपुट: 2
रेंज 2 से 5 में '2' अनसेट बिट्स हैं।
एल्गोरिदम
bin()का उपयोग करके n को बाइनरी में बदलें।- पहले दो वर्ण ('0b') हटाएं।
- स्ट्रिंग को उल्टा करें।
- इंडेक्स l-1 से r तक (r एक्सक्लूसिव) सभी अनसेट बिट '0' गिनें।
उदाहरण कोड
# एक रेंज में अनसेट बिट्स गिनने का फंक्शन
def countunsetbits(n, st, ed):
# n को बाइनरी में बदलें
bi = bin(n)
# पहले दो वर्ण हटाएं
bi = bi[2:]
# स्ट्रिंग उल्टा करें
bi = bi[-1::-1]
# इंडेक्स st-1 से ed तक अनसेट बिट '0' गिनें
print(len([bi[i] for i in range(st-1, ed) if bi[i]=='0']))
# ड्राइवर प्रोग्राम
if __name__ == "__main__":
n = int(input("धनात्मक संख्या दर्ज करें ::>"))
st = int(input("प्रारंभिक स्थिति दर्ज करें"))
ed = int(input("अंतिम स्थिति दर्ज करें"))
countunsetbits(n, st, ed)
आउटपुट
धनात्मक संख्या दर्ज करें ::> 50
प्रारंभिक स्थिति2
अंतिम स्थिति5
2