मान लीजिए कि हमारे पास एक संख्या n है, हमें इसे निम्नलिखित क्रियाओं का उपयोग करके कितनी भी बार 0 में बदलना है -
-
n के द्विआधारी प्रतिनिधित्व में सबसे दाहिने बिट का चयन करें।
-
जब (i-1)वें बिट को 1 पर सेट किया जाता है और (i-2)वें से 0वें बिट को 0 पर सेट किया जाता है, तो n के बाइनरी प्रतिनिधित्व में ith बिट को बदलें।
तो अंत में हमें n को 0 में बदलने के लिए आवश्यक न्यूनतम संक्रियाओं की संख्या ज्ञात करनी होगी।
इसलिए, यदि इनपुट n =6 की तरह है, तो आउटपुट 4 होगा क्योंकि शुरू में 6 ="110", फिर इसे दूसरे ऑपरेशन द्वारा "010" में कनवर्ट करें, फिर पहले ऑपरेशन का उपयोग करके "011" में कनवर्ट करें, फिर कनवर्ट करें " 001" दूसरे ऑपरेशन का उपयोग करके और अंत में पहले ऑपरेशन का उपयोग करके "000" में कनवर्ट करें।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
n :=संख्या n के बाइनरी बिट्स की सूची
-
एम:=एक नई सूची
-
अंतिम:=0
-
n में प्रत्येक d के लिए, करें
-
यदि अंतिम 1 के समान है, तो
-
घ:=1-डी
-
-
अंतिम:=घ
-
m के अंत में d डालें
-
-
m:=m के तत्वों को मिलाकर बाइनरी नंबर बनाएं
-
m को दशमलव रूप में लौटाएं
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें
def solve(n): n=list(map(int,bin(n)[2:])) m=[] last=0 for d in n: if last==1: d=1-d last=d m.append(d) m=''.join(map(str,m)) return int(m,2) n = 6 print(solve(n))
इनपुट
"95643", "45963"
आउटपुट
4