Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में संख्याओं की सूची से 0s से 1s k बार बदलकर न्यूनतम संभव योग खोजने का कार्यक्रम?

मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और दूसरा मान 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

  1. एक सूची का संचयी योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें संचयी राशि के साथ एक सूची बनानी होगी। आइए अब नीचे दिए गए कार्यान्वयन में समाधान देखें - उदाहरण # cumulative sum def Cumulative(l):    new = []    cumsum = 0   &nb

  1. सूची में तत्वों का योग खोजने के लिए पायथन कार्यक्रम

    इस लेख में, हम दिए गए समस्या कथन को हल करने के लिए समाधान और दृष्टिकोण के बारे में जानेंगे। समस्या कथन एक इनपुट के रूप में एक सूची को देखते हुए, हमें दी गई सूची के योग की गणना करने की आवश्यकता है। यहां हमारे पास विचार करने के लिए दो दृष्टिकोण हैं यानी अंतर्निहित फ़ंक्शन का उपयोग करना और ब्रूट-फोर्

  1. पायथन में संख्याओं की सूची का योग कैसे खोजें?

    पायथन का बिल्ट-इन फंक्शन योग () एक पुनरावृत्तीय वस्तु जैसे सूची या टपल में संख्याओं का योग देता है। इसमें दो तर्क होते हैं, प्रारंभिक मान जो वैकल्पिक है और डिफ़ॉल्ट रूप से 0 और चलने योग्य वस्तु है उदाहरण >>> l1=[10,20,30,40,50] >>> ttl=sum(l1) >>> ttl 150 >>> ttl=