ধরুন আমাদের স্ট্রিং ফরম্যাটে একটি সংখ্যা আছে এবং আমাদের 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
- s - 1 থেকে 0 এর রেঞ্জের আকারের জন্য, 1 দ্বারা হ্রাস করুন, করুন
- res :=(res + ডিজিট মান s[i] * B *(i + 1)) mod M
- sum_val :=sum_val - s[i] এর অঙ্কের মান
- B :=(B * 10 + 1) mod M
- রিটার্ন রিটার্ন
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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