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

Python में N विशिष्ट संख्याएं ढूंढना जिनका बिटवाइज OR K के बराबर हो


मान लीजिए हमारे पास दो पूर्णांक N और K हैं; हमें N अद्वितीय मान ढूंढने हैं जिनका बिटवाइज OR, K के समान है। यदि ऐसा कोई परिणाम नहीं है, तो -1 वापस करें।

तो, यदि इनपुट N = 4 और K = 6 की तरह है, तो आउटपुट [6,0,1,2] होगा।

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

  • MAX := 32

  • visited := MAX आकार की एक सूची और False से भरें

  • res := एक नई सूची

  • एक फ़ंक्शन add() परिभाषित करें। यह num लेगा

  • point := 0

  • value := 0

  • i के लिए 0 से MAX की सीमा में, करें

    • यदि visited[i] शून्येतर है, तो

      • अगले पुनरावृत्ति के लिए जाएं

    • अन्यथा,

      • यदि num AND 1 शून्येतर है, तो

        • value := value + (2^i)

      • num := num/2 (केवल पूर्णांक भाग लें)

  • res के अंत में value डालें

  • मुख्य विधि से, निम्नलिखित करें -

  • pow2 := 2^0 से 2^31 तक 2 की घात की एक सरणी

  • res के अंत में k डालें

  • cnt_k := k में बिट्स की संख्या

  • यदि pow2[cnt_k] < n, तो

    • -1 वापस करें

  • count := 0

  • i के लिए 0 से pow2[cnt_k] - 1 की सीमा में, करें

    • add(i)

    • count := count + 1

    • यदि count, n के समान है, तो

      • लूप से बाहर निकलें

  • res वापस करें

उदाहरण

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

MAX = 32 visited = [False for i in range(MAX)] res = [] def set_bit_count(n):     if (n == 0):         return 0     else:         return (n & 1) + set_bit_count(n >> 1) def add(num):     point = 0     value = 0     for i in range(MAX):         if (visited[i]):             continue         else:             if (num & 1):                 value += (1 << i)             num = num//2     res.append(value) def solve(n, k):     pow2 = [2**i for i in range(MAX)]     res.append(k)     cnt_k = set_bit_count(k)     if (pow2[cnt_k] < n):         return -1     count = 0     for i in range(pow2[cnt_k] - 1):         add(i)         count += 1         if (count == n):             break     return res n = 4 k = 6 print(solve(n, k))

इनपुट

4, 6

आउटपुट

[6, 0, 1, 2]

  1. - Python प्रोग्राम: तीन संख्याओं में से अधिकतम खोजें

    इस ट्यूटोरियल में, हम एक प्रोग्राम लिखेंगे जो तीन आंकड़ों में से अधिकतम राशि ढूंढता है। हमारे पास तीन संख्याएं होंगी, और हमारा लक्ष्य उन तीन संख्याओं में से अधिकतम संख्या ढूंढना है।बेहतर समझ के लिए कुछ नमूना टेस्ट केस देखें।इनपुट: a, b, c = 2, 34, 4 आउटपुट: 34इनपुट: a, b, c = 25, 3, 12 आउटपुट: 25इनप

  1. - पायथन का उपयोग करके कीथ नंबर कैसे खोजें

    समस्या विवरण आप पायथन में किसी संख्या के कीथ नंबर होने की जांच के लिए निम्न कोड का उपयोग कर सकते हैं। उदाहरण def is_keith_number(n): # अंकों का योग निकालें पहले सभी अंकों की सरणी प्राप्त करके फिर उन्हें जोड़कर c = str(n) a = list(map(int, c)) b = sum(a) # अब जांचें कि संख्या कीथ

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

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