কম্পিউটার

পাইথনে প্রদত্ত রেঞ্জে সংখ্যার বিটওয়াইজ এবং পরিসীমা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের দুটি মান আছে শুরু এবং শেষ, আমাদের পরিসরে [শুরু, শেষ] (উভয়ই অন্তর্ভুক্ত) সমস্ত সংখ্যার বিটওয়াইজ AND খুঁজে বের করতে হবে।

সুতরাং, ইনপুটটি যদি start =8 end =12 এর মত হয়, তাহলে আউটপুট হবে 8 হল 1000 বাইনারিতে এবং 12 হল 1100 বাইনারিতে, তাই 1000 AND 1001 AND 1010 AND 1011 AND 1100 হল 1000 যা 8.

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

  • n :=শেষ - শুরু + 1
  • x :=0
  • 31 থেকে 0 রেঞ্জের b-এর জন্য
  • , 1 কমিয়ে
      করুন
    • যদি 2^b
    • লুপ থেকে বেরিয়ে আসুন
  • যদি 2^b এবং শুরু এবং শেষ অ-শূন্য হয়, তাহলে
    • x :=x + (2^b)
  • ফেরত x
  • উদাহরণ

    আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    def solve(start, end):
       n = end - start + 1
       x = 0
       for b in range(31, -1, -1):
          if (1 << b) < n:
             break
          if (1 << b) & start & end:
             x += 1 << b
       return x
    
    start = 8
    end = 12
    print(solve(start, end))

    ইনপুট

    8, 12

    আউটপুট

    8

    1. পাইথন একটি প্রদত্ত সীমার মধ্যে র্যান্ডম সংখ্যা তৈরি করে এবং একটি তালিকায় সংরক্ষণ করে

    2. পাইথনে প্রদত্ত পরিসর সহ সংখ্যার তালিকা তৈরি করুন

    3. পাইথন প্রোগ্রাম একটি প্রদত্ত সংখ্যার জন্য 3 এবং 5 দ্বারা বিভাজ্য সমস্ত সংখ্যা মুদ্রণ করে

    4. পাইথন প্রোগ্রাম একটি প্রদত্ত সীমার মধ্যে র্যান্ডম সংখ্যা তৈরি করতে এবং একটি তালিকায় সংরক্ষণ করতে?