কম্পিউটার টিউটোরিয়াল

পাইথনে অ্যারেয়ের সব সংখ্যার সাথে XOR করলে ন্যূনতম যোগফল দেয় এমন সংখ্যা খুঁজুন


मान लीजिए हमारे पास एक सरणी A है, हमें एक संख्या X ढूंढनी है जैसे कि (A[0] XOR X) + (A[1] XOR X) + ... + A[n-1] XOR X न्यूनतम हो।

यदि इनपुट [3, 4, 5, 6, 7] जैसा है, तो आउटपुट X = 7, Sum = 10 होगा।

इसे हल करने के लिए हम निम्नलिखित चरणों का पालन करेंगे:

  • search_res() नामक एक फंक्शन परिभाषित करें। यह arr, n लेगा:
    • element := arr[0]
    • i को 0 से arr के आकार तक के लिए, करें:
      • यदि arr[i] > element, तो element := arr[i]
    • p := log2(element) का पूर्णांक भाग + 1
    • X := 0
    • i को 0 से p तक के लिए, करें:
      • cnt := 0
      • j को 0 से n तक के लिए, करें:
        • यदि arr[j] & (2^i) शून्येतर है, तो cnt := cnt + 1
      • यदि cnt > n/2 का पूर्णांक भाग शून्येतर है, तो X := X + (2^i)
    • sum := 0
    • i को 0 से n तक के लिए, करें:
      • sum := sum + (X XOR arr[i])
    • X और sum लौटाएं

उदाहरण

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

from math import log2
def search_res(arr, n):
    element = arr[0]
    for i in range(len(arr)):
        if arr[i] > element:
            element = arr[i]
    p = int(log2(element)) + 1
    X = 0
    for i in range(p):
        cnt = 0
        for j in range(n):
            if (arr[j] & (1 << i)):
                cnt += 1
        if cnt > int(n / 2):
            X += 1 << i
    sum = 0
    for i in range(n):
        sum += (X ^ arr[i])
    print("X =", X, ", Sum =", sum)

arr = [3, 4, 5, 6, 7]
n = len(arr)
search_res(arr, n)

इनपुट

[3, 4, 5, 6, 7]

आउटपुट

X = 7 , Sum = 10

  1. পাইথন প্রোগ্রামে অ্যারের যোগফল বের করা

  2. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার পাইথন প্রোগ্রাম

  3. পাইথনে অ্যারের যোগফল বের করা

  4. পাইথনে একটি সংখ্যার গুণনীয়গুলোর ন্যূনতম যোগফল বের করার প্রোগ্রাম