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

পাইথন ব্যবহার করে শুধু ১ সম্বিশিষ্ট সাবস্ট্রিংয়ের সংখ্যা গণনা


একটি বাইনারি স্ট্রিং s দেওয়া আছে। আমাদের কাজ হলো স্ট্রিংটিতে শুধু '১' অক্ষর দিয়ে গঠিত সাবস্ট্রিংগুলির মোট সংখ্যা বের করা। ফলাফল বড় হতে পারে, তাই ১০⁹ + ৭ দিয়ে ভাগশেষ (mod) ফেরত দিতে হবে।

যেমন, ইনপুট s = "1011010" হলে আউটপুট হবে ৫ কারণ:
১. "১" - চারবার
২. "১১" - একবার

সমাধানের ধাপসমূহ

  • m := 10⁹ + 7
  • result := 0
  • div := বাইনারি স্ট্রিংকে '০' দিয়ে ভাগ করে নিন (split করুন)।
  • div-এর প্রতিটি x এর জন্য:
    • যদি x খালি হয়, তবে পরবর্তী ইটারেশনের জন্য যান।
    • result := result + (x-এর দৈর্ঘ্য × (x-এর দৈর্ঘ্য + 1)) / 2
  • result mod m ফেরত দিন।

উদাহরণ

def solve(s):
    m = 10**9 + 7
    result = 0
    for x in s.split('0'):
        if not x:
            continue
        result += (len(x) * (len(x) + 1)) // 2
    return result % m

s = "1011010"
print(solve(s))

ইনপুট

"1011010"

আউটপুট

5

  1. Python দিয়ে একই লেবেল ওয়ালা সাব-ট্রি নোড সংখ্যা বের করার প্রোগ্রাম

  2. পাইথন ব্যবহার করে সর্বোচ্চ সম্ভাবনার পথ খুঁজে বের করার প্রোগ্রাম

  3. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা

  4. পাইথন প্রোগ্রাম: map ফাংশন ব্যবহার করে সর্বোচ্চ ১-এর সারি খুঁজে বের করা (Duplicate)