কম্পিউটার

পাইথনে 0 থেকে n রেঞ্জের সমস্ত সংখ্যার সেট বিটের মোট সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা সংখ্যা আছে। 0 ≤ i ≤ num রেঞ্জের প্রতিটি সংখ্যার জন্য আমাদের তাদের বাইনারি কাউন্টারপার্টে 1 এর সংখ্যা গণনা করতে হবে এবং তাদের একটি তালিকা হিসাবে ফেরত দিতে হবে। সুতরাং যদি সংখ্যাটি 5 হয়, তাহলে সংখ্যাগুলি হল [0, 1, 2, 3, 4, 5], এবং এই সংখ্যাগুলির মধ্যে 1 এর সংখ্যা হল [0, 1, 1, 2, 1, 2], তাই এটি হবে রিটার্ন 7.

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

  • res :=একটি অ্যারে যা 0s এর num + 1 সংখ্যা ধারণ করে

  • অফসেট :=0

  • 1 থেকে num + 1

    রেঞ্জের মধ্যে i এর জন্য
    • যদি i এবং i − 1 =0, তাহলে res[i] :=1 এবং অফসেট :=0

    • অন্যথায় 1 এবং res[i] :=1 + res[অফসেট]

      দ্বারা অফসেট বাড়ান
  • res এর উপাদানগুলির যোগফল ফেরত দিন

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

উদাহরণ

class Solution:
   def countBits(self, num):
      result = [0] * (num+1)
      offset = 0
      for i in range(1,num+1):
         if i & i-1 == 0:
            result[i] = 1
            offset = 0
         else:
            offset+=1
            result[i] = 1 + result[offset]
      return sum(result)
ob1 = Solution()
print(ob1.countBits(5))

ইনপুট

5

আউটপুট

7

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

  2. পাইথন প্রোগ্রাম 1 থেকে n পর্যন্ত সমস্ত সংখ্যায় মোট সেট বিট গণনা করে।

  3. একটি পরিসরে আনসেট বিট গণনা করার জন্য পাইথন প্রোগ্রাম।

  4. একটি সংখ্যার মোট বিট গণনা করার জন্য একটি পাইথন প্রোগ্রাম লিখুন?