मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान k है। हमें k बार ऑपरेशन करना है:सूची में किसी भी संख्या का चयन करें। उस संख्या के द्विआधारी प्रतिनिधित्व में, एक बिट का चयन करें जो कि 0 है और इसे 1 बनाएं। अंत में, हमें k संचालन करने के बाद सभी संख्याओं का न्यूनतम संभव योग वापस करना होगा। यदि उत्तर बहुत अधिक है, तो परिणाम मोड 10^9+7 लौटाएं।
इसलिए, यदि इनपुट nums =[4, 7, 3] k =2 जैसा है, तो आउटपुट 17 होगा, क्योंकि 4 का बाइनरी प्रतिनिधित्व 100 है, 3 011 है, और 7 111 है। चूंकि हमें सेट करने की आवश्यकता है 2 बिट्स, हम इसे 111 (7) बनाने के लिए 4 के बिट्स सेट कर सकते हैं। तब कुल योग 7 + 7 + 3 =17 होता है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
-
उत्तर:=0, मैं:=0
-
जबकि k गैर-शून्य है, करें
-
अंकों में प्रत्येक n के लिए, करें
-
अगर (n / 2^i) सम है, तो
-
उत्तर:=उत्तर + 2^i
-
कश्मीर:=के - 1
-
यदि k, 0 के समान है, तो
-
लूप से बाहर आएं
-
-
-
-
मैं :=मैं + 1
-
-
वापसी (उत्तर + अंकों के सभी तत्वों का योग) मॉड एम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution: def solve(self, nums, k): m = (10 ** 9 + 7) ans = 0 i = 0 while k: for n in nums: if (n >> i) & 1 == 0: ans += 1 << i k -= 1 if k == 0: break i += 1 return (ans + sum(nums)) % m ob = Solution() nums = [4, 7, 3] k = 2 print(ob.solve(nums, k))
इनपुट
[4, 7, 3], 2
आउटपुट
17