मान लीजिए कि हमारे पास एक गैर-ऋणात्मक मान n है, हमें इसके द्विआधारी प्रतिनिधित्व में 1s के लगातार सबसे लंबे समय तक चलने की लंबाई का पता लगाना है।
इसलिए, यदि इनपुट n =1469 जैसा है, तो आउटपुट 4 होगा, क्योंकि 156 का बाइनरी प्रतिनिधित्व "10110111101" है, इसलिए लगातार चार 1s हैं
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गिनती :=0
- जबकि n 0 के समान नहीं है, करें
- n :=n AND (n एक बिट बाईं ओर शिफ्ट करने के बाद)
- गिनती :=गिनती + 1
- वापसी की संख्या
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(n): count = 0 while n != 0: n = n & (n << 1) count = count + 1 return count n = 1469 print(solve(n))
इनपुट
1469
आउटपुट
4