আমাদের একটি সংখ্যা স্ট্রিং ফরম্যাটে আছে, এবং আমাদের s-এর সব সাবস্ট্রিংর যোগফল বের করতে হবে। উত্তর অনেক বড় হতে পারে, তাই রেজাল্টকে 10^9+7 দিয়ে মডুলো করে রিটার্ন করুন।
উদাহরণস্বরূপ, ইনপুট s = "268" হলে আউটপুট হবে 378 কারণ সাবস্ট্রিংগুলো হলো "2", "6", "8", "26", "68" এবং "268" যাদের মোট যোগফল 378।
সমাধানের ধাপসমূহ
M := 10^9 + 7sum_val := 0B := 1res := 0i=s-এর আকার - 1 থেকে 0 পর্যন্ত ১ কমানো হারে লুপ চালান:res := (res + int(s[i]) * B * (i + 1)) % Msum_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