मान लीजिए हमारे पास स्ट्रिंग फॉर्मेट में एक संख्या है, और हमें s के सभी सबस्ट्रिंग्स का योग ढूंढना है। उत्तर बहुत बड़ा हो सकता है, इसलिए परिणाम को 10^9+7 मॉड्यूलो वापस करें।
उदाहरण के लिए, यदि इनपुट s = "268" है, तो आउटपुट 378 होगा क्योंकि सबस्ट्रिंग्स हैं "2", "6", "8", "26", "68" और "268" जिनका कुल योग 378 है।
हल करने के चरण
M := 10^9 + 7sum_val := 0B := 1res := 0iकोlen(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