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

N अलग-अलग संख्याएँ खोजें जिनका बिटवाइज़ या पायथन में K के बराबर है


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

लौटाएं

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

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

  • मैक्स :=32

  • देखी गई :=आकार MAX की सूची और गलत से भरें

  • रेस :=एक नई सूची

  • फ़ंक्शन जोड़ें () को परिभाषित करें। यह संख्या लेगा

  • बिंदु :=0

  • मान :=0

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

    • अगर विज़िट किया गया [i] शून्य नहीं है, तो

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

    • अन्यथा,

      • अगर संख्या और 1 शून्य नहीं है, तो

        • मान :=मान +(2^i)

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

  • रेस के अंत में वैल्यू डालें

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

  • pow2 :=2^0 से 2^31 तक 2 की शक्ति की एक सरणी

  • रेस के अंत में k डालें

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

  • अगर pow2[cnt_k]

    • वापसी -1

  • गिनती :=0

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

    • जोड़ें (i)

    • गिनती :=गिनती + 1

    • अगर गिनती n के समान है, तो

      • लूप से बाहर आएं

  • रिटर्न रेस

उदाहरण

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

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. अधिकतम तीन नंबर खोजने के लिए पायथन प्रोग्राम

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

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

    आप निम्न कोड का उपयोग यह पता लगाने के लिए कर सकते हैं कि क्या कोई संख्या अजगर में कीथ संख्या है - उदाहरण def is_keith_number(n):    # Find sum of digits by first getting an array of all digits then adding them    c = str(n)    a = list(map(int, c))    b = sum(

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

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