কম্পিউটার

পাইথনে পরপর বাইনারি সংখ্যার সংমিশ্রণ খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি সংখ্যা n আছে, আমাদেরকে 1 থেকে n-এর বাইনারি উপস্থাপনাগুলিকে একের পর এক ক্রমানুসারে সংযুক্ত করে বাইনারি স্ট্রিং-এর দশমিক মান খুঁজে বের করতে হবে, যদি উত্তরটি খুব বড় হয় তাহলে উত্তর মডিউল 10^9 + 7 দিন।

সুতরাং, যদি ইনপুটটি n =4 এর মত হয়, তাহলে আউটপুট হবে 220 কারণ, 1 থেকে 4 পর্যন্ত বাইনারি উপস্থাপনাকে একত্রিত করে "1" + "10" + "11" + "100" =110111000 হবে, এটি বাইনারি 220 এর প্রতিনিধিত্ব।

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

  • উত্তর :=1
  • m :=10^9+7
  • 2 থেকে n রেঞ্জের i জন্য, করুন
    • উত্তর :=শিফট উত্তর (i এর বিট দৈর্ঘ্য) বার সংখ্যা
    • ans :=(ans+i) mod m
  • উত্তর ফেরত দিন

উদাহরণ

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

def solve(n):
   ans = 1
   m = (10**9+7)
   for i in range(2,n+1):
      ans = ans<<i.bit_length()
      ans = (ans+i) % m
   return ans

n = 4
print(solve(n))

ইনপুট

4

আউটপুট

220

  1. পাইথনে একটি বাইনারি গাছের দীর্ঘতম ধারাবাহিক পথের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে একটি বাইনারি গাছে কে-দৈর্ঘ্যের পাথ খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথন প্রোগ্রাম পরপর 1’ ছাড়া বাইনারি স্ট্রিং সংখ্যা গণনা করতে

  4. বাইনারি ম্যাট্রিক্সে ডুপ্লিকেট সারি খুঁজতে পাইথন প্রোগ্রাম লিখুন