কম্পিউটার টিউটোরিয়াল

পাইথনে ক্রমাগত বাইনারি সংখ্যা কনক্যাটেনেট করে ডেসিম্যাল ভ্যালু বের করার প্রোগ্রাম


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

যেমন, ইনপুট n = 4 হলে, আউটপুট হবে ২২০ কারণ, ১ থেকে ৪ পর্যন্ত বাইনারি কনক্যাটেনেট করলে "1" + "10" + "11" + "100" = 110111000, যা ২২০-এর বাইনারি রিপ্রেজেন্টেশন।

সমাধান পদ্ধতি

এই সমস্যাটি সমাধান করতে নিচের ধাপগুলো অনুসরণ করুন:

  • ans := 1
  • m := 10^9+7
  • i = 2 থেকে n পর্যন্ত
    • ans := ans << (i.bit_length())
    • ans := (ans + i) % m
  • ans রিটার্ন করুন

উদাহরণ

নিচের ইমপ্লিমেন্টেশনটি দেখুন আরও ভালো বোঝার জন্য:

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

ইনপুট

4 

আউটপুট

220

  1. পাইথনে বাইনারি ট্রির লংগেস্ট কনsekutিভ পথের দৈর্ঘ্য বের করার প্রোগ্রাম

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

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

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