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

जांचें कि क्या किसी सरणी को जोड़े में विभाजित किया जा सकता है जिसका योग पायथन में k से विभाज्य है

मान लीजिए कि हमारे पास संख्याओं की एक सरणी है और दूसरी संख्या k है, तो हमें यह जांचना होगा कि क्या दिए गए सरणी को जोड़े में विभाजित किया जा सकता है जैसे कि प्रत्येक जोड़ी का योग k से विभाज्य है या नहीं।

इसलिए, यदि इनपुट arr =[5, 15, 6, 9] k =7 जैसा है, तो आउटपुट सही होगा क्योंकि हम (5, 9) और (15, 6) जैसे जोड़े ले सकते हैं।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • n :=सरणी का आकार
  • यदि n विषम है, तो
    • झूठी वापसी
  • घटनाएं:=एक खाली शब्दकोश, अगर कुछ कुंजी नहीं है तो उस लापता कुंजी के मान के रूप में 0 लौटाएं
  • मैं के लिए 0 से n की सीमा में, करते हैं
    • घटनाओं को बढ़ाएं[((सरणी[i] mod k) + k) mod k] 1 तक
  • मैं के लिए 0 से n की सीमा में, करते हैं
    • शेष :=((सरणी[i] मॉड k) + k) मॉड k
    • यदि 2 * शेषफल k के समान है, तो
      • यदि घटनाएँ[शेष] विषम हैं, तो
        • झूठी वापसी
    • अन्यथा जब शेषफल 0 के समान हो, तो
      • यदि घटनाएं [शेष] और 1 शून्य नहीं है, तो
        • झूठी वापसी
    • अन्यथा जब घटनाएँ [शेष] घटनाएँ [k - शेष] के समान नहीं होती हैं, तब
      • झूठी वापसी
  • सही लौटें

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

उदाहरण

from collections import defaultdict
def solve(array, k):
   n = len(array)
   if n % 2 != 0:
      return False
   occurrences = defaultdict(lambda : 0)
   for i in range(0, n):
      occurrences[((array[i] % k) + k) % k] += 1
   for i in range(0, n):
      remainder = ((array[i] % k) + k) % k
      if (2 * remainder == k):
         if (occurrences[remainder] % 2 != 0):
            return False
      elif (remainder == 0):
         if (occurrences[remainder] & 1):
            return False
         elif (occurrences[remainder] != occurrences[k - remainder]):
            return False
   return True
arr = [5, 15, 6, 9]
k = 7
print(solve(arr, k))

इनपुट

[5, 15, 6, 9], 7

आउटपुट

True

  1. एक सरणी से ट्रिपल की संख्या की जांच करने का कार्यक्रम जिसका योग लक्ष्य से कम है या पायथन नहीं है

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक कहा जाता है और एक अन्य मूल्य लक्ष्य है, हमें ट्रिपल (i

  1. जाँच करने के लिए कार्यक्रम हम चार तत्व पा सकते हैं जिनका योग k के समान है या नहीं

    मान लीजिए कि हमारे पास संख्याओं की एक सूची है जिसे अंक और एक मान k कहा जाता है, हमें यह जांचना होगा कि सूची में चार अद्वितीय तत्व हैं जो k तक जोड़ते हैं। इसलिए, यदि इनपुट अंकों की तरह है =[11, 4, 6, 10, 5, 1] ​​k =25, तो आउटपुट सही होगा, क्योंकि हमारे पास [4, 6, 10, 5] है जिसका योग 25 है। इसे हल

  1. उन योगों का पता लगाएं जिनके लिए एक सरणी को समान योग के उप-सरणी में पायथन में विभाजित किया जा सकता है

    मान लीजिए कि हमारे पास पूर्णांक ए की एक सरणी है; हमें योग के लिए सभी मानों को खोजना होगा ताकि एक मान के लिए योग [i] सरणी को योग योग [i] के उप-सरणी में विभाजित किया जा सके। यदि हम सरणी को समान योग के उप-सरणी में विभाजित नहीं कर सकते हैं तो -1 लौटाएं। इसलिए, यदि इनपुट ए =[2, 4, 2, 2, 2, 4, 2, 6] जैसा