मान लीजिए, आकार n की एक सरणी 'अंक' है जिसमें धनात्मक पूर्णांक हैं। हमारे पास एक और सरणी 'क्वेरी' है जिसमें पूर्णांक जोड़े (पीआई, क्यूई) होते हैं। सरणी प्रश्नों में प्रत्येक प्रश्न के लिए, उत्तर सरणी संख्या [j] में संख्याओं का योग होगा जहां pi <=j
इसलिए, यदि इनपुट अंकों की तरह है =[2, 3, 4, 5, 6, 7, 8, 9, 10], प्रश्न =[(2, 5), (7, 3), (6, 4)] , तो आउटपुट [13, 9, 8] होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
ए:=अंक
प्रश्न:=प्रश्न
n :=अंकों की लंबाई
एम:=10^9 + 7
m :=पूर्णांक मान (n ^ 0.5) + 2
P :=एक नई सूची जिसमें सूची A m बार होती है
मैं के लिए 1 से मी की सीमा में, करो
j के लिए n-1 से -1 की श्रेणी में, 1 से घटाएं, करें
अगर i+j
P[i, j] :=(P[i, j]+P[i, i+j]) मोडुलो M
प्रत्येक मान के लिए b, k in Q, do
अगर के <एम, तो
वापसी [सूचकांक पी से मूल्य [के, बी]]
अन्यथा
वापसी [योग (ए [बी से के]) मोडुलो एम]
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def solve(A, Q):
n, M = len(A), 10**9+7
m = int(n**0.5)+2
P = [A[:] for _ in range(m)]
for i in range(1,m):
for j in range(n-1,-1,-1):
if i+j < n:
P[i][j] = (P[i][j]+P[i][i+j]) % M
return [P[k][b] if k < m else sum(A[b::k]) % M for b, k in Q]
print(solve([2, 3, 4, 5, 6, 7, 8, 9, 10], [(2, 5), (7, 3), (6, 4)]))
इनपुट
[2, 3, 4, 5, 6, 7, 8, 9, 10], [(2, 5), (7, 3), (6, 4)]
आउटपुट
[13, 9, 8]