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