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

পাইথনে স্ট্রিং আকারের সংখ্যার সব সাবস্ট্রিংর মোট যোগফল খুঁজে বের করার প্রোগ্রাম


আমাদের একটি সংখ্যা স্ট্রিং ফরম্যাটে আছে, এবং আমাদের s-এর সব সাবস্ট্রিংর যোগফল বের করতে হবে। উত্তর অনেক বড় হতে পারে, তাই রেজাল্টকে 10^9+7 দিয়ে মডুলো করে রিটার্ন করুন।

উদাহরণস্বরূপ, ইনপুট s = "268" হলে আউটপুট হবে 378 কারণ সাবস্ট্রিংগুলো হলো "2", "6", "8", "26", "68" এবং "268" যাদের মোট যোগফল 378।

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

  • M := 10^9 + 7

  • sum_val := 0

  • B := 1

  • res := 0

  • i = s-এর আকার - 1 থেকে 0 পর্যন্ত ১ কমানো হারে লুপ চালান:

    • res := (res + int(s[i]) * B * (i + 1)) % M

    • sum_val := sum_val - int(s[i])

    • B := (B * 10 + 1) % M

  • res রিটার্ন করুন

উদাহরণ

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

def solve(s):
    M = 10**9 + 7
    sum_val = 0
    B = 1
    res = 0
    for i in range(len(s)-1, -1, -1):
        res = (res + int(s[i]) * B * (i+1)) % M
        sum_val -= int(s[i])
        B = (B * 10 + 1) % M
    return res

s = "268"
print(solve(s))

ইনপুট

"268"

আউটপুট

378
  1. একটি সংখ্যার সম ফ্যাক্টরের যোগফল বের করার পাইথন প্রোগ্রাম

  2. দেওয়া স্ট্রিংয়ের সকল পারমিউটেশন প্রিন্ট করার পাইথন প্রোগ্রাম

  3. পাইথনে স্ট্রিং নাম্বার প্যালিনড্রোম কিনা চেক করা

  4. পাইথন প্রোগ্রাম: দেয়া স্ট্রিং-এ শব্দ গণনা (Count Words in a Given String)