मान लीजिए कि हमारे पास n सकारात्मक तत्वों के साथ एक सरणी संख्या है। यदि हम संख्याओं के सभी गैर-रिक्त सन्निहित उप-सरणियों के योग की गणना करते हैं और फिर उन्हें n*(n+1)/2 संख्याओं की एक नई सरणी बनाकर, गैर-घटते फैशन में क्रमबद्ध करते हैं। हमें नए एरे में इंडेक्स बाएं से इंडेक्स राइट (1-इंडेक्स) तक की संख्याओं का योग निकालना है। उत्तर बहुत बड़ा हो सकता है इसलिए वापसी परिणाम मॉड्यूल 10^9 + 7.
इसलिए, यदि इनपुट अंकों की तरह है =[1,5,2,6] बाएँ =1 दाएँ =5, तो आउटपुट 20 होगा क्योंकि यहाँ सभी सबअरे योग 1, 5, 2, 6, 6, 7, 8 हैं। , 8, 13, 14, इसलिए छँटाई के बाद, वे [1,2,5,6,6,7,8,8,13,14] हैं, सूचकांक 1 से 5 तक के तत्वों का योग 1+5+2 है +6+6 =20.
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
मी :=10^9 + 7
-
n :=अंकों का आकार
-
a:=एक नई सूची
-
मैं के लिए 0 से n -1 की सीमा में, करो
-
j के लिए I से n-1 की श्रेणी में, करें
-
अगर मैं j के समान हूं, तो
-
-
अन्यथा,
-
ए के अंत में ((अंक [जे] + ए का अंतिम तत्व) मॉड एम) डालें
-
-
-
-
सूची को क्रमबद्ध करें एक
-
sm:=a के सभी तत्वों का योग [सूचकांक बाएँ-1 से दाएँ])
-
वापसी एसएम मॉड एम
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(nums, left, right): m = 10**9 + 7 n = len(nums) a=[] for i in range(n): for j in range(i,n): if i==j: a.append(nums[j]) else: a.append((nums[j]+a[-1])%m) a.sort() sm=sum(a[left-1:right]) return sm % m nums = [1,5,2,6] left = 1 right = 5 print(solve(nums, left, right))
इनपुट
[1,5,2,6], 1, 5
आउटपुट
20