কম্পিউটার

N স্বতন্ত্র সংখ্যা খুঁজুন যার বিটওয়াইজ বা পাইথনে K এর সমান


ধরুন আমাদের দুটি পূর্ণসংখ্যা N এবং K আছে; আমাদের এন অনন্য মানগুলি খুঁজে বের করতে হবে যার বিট-ওয়াইজ OR K এর মতো। যদি এমন কোন ফলাফল না থাকে, তাহলে -1 ফেরত দিন

সুতরাং, যদি ইনপুটটি N =4 এবং K =6 এর মত হয়, তাহলে আউটপুট হবে [6,0,1,2]।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • সর্বোচ্চ :=32

  • পরিদর্শন করেছেন :=MAX আকারের একটি তালিকা এবং False দিয়ে পূরণ করুন

  • res :=একটি নতুন তালিকা

  • একটি ফাংশন সংজ্ঞায়িত করুন add()। এই সংখ্যা লাগবে

  • পয়েন্ট :=0

  • মান :=0

  • আমি 0 থেকে MAX রেঞ্জের জন্য, কর

    • যদি পরিদর্শন করা হয় [i] অ-শূন্য হয়, তাহলে

      • পরবর্তী পুনরাবৃত্তির জন্য যান

    • অন্যথায়,

      • যদি সংখ্যা এবং 1 অ-শূন্য হয়, তাহলে

        • মান :=মান +(2^i)

      • num :=num/2 (শুধুমাত্র পূর্ণসংখ্যা অংশ নিন)

  • res এর শেষে মান সন্নিবেশ করুন

  • প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -

  • pow2 :=2^0 থেকে 2^31

    পর্যন্ত 2 শক্তির একটি অ্যারে
  • res এর শেষে 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. পাইথন প্রোগ্রাম সর্বোচ্চ তিনটি সংখ্যা খুঁজে বের করতে

  2. পাইথন ব্যবহার করে কিথ নম্বরগুলি কীভাবে খুঁজে পাবেন?

  3. পাইথনে হেক্স সংখ্যার বিটওয়াইজ XOR কিভাবে?

  4. পাইথনে সংখ্যার তালিকার যোগফল কীভাবে খুঁজে পাবেন?