ধরুন, ধনাত্মক পূর্ণসংখ্যা সম্বলিত n আকারের একটি অ্যারে 'সংখ্যা' আছে। আমাদের আরেকটি অ্যারে 'কোয়েরি' রয়েছে যাতে পূর্ণসংখ্যা জোড়া রয়েছে (pi, qi)। অ্যারের প্রশ্নের প্রতিটি প্রশ্নের জন্য, উত্তর হবে অ্যারের সংখ্যার সংখ্যার যোগফল [j] যেখানে pi <=j
সুতরাং, যদি ইনপুটটি সংখ্যার মত হয় =[2, 3, 4, 5, 6, 7, 8, 9, 10], প্রশ্ন =[(2, 5), (7, 3), (6, 4)] , তাহলে আউটপুট হবে [13, 9, 8]।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
A :=সংখ্যা
প্রশ্ন :=প্রশ্ন
n :=সংখ্যার দৈর্ঘ্য
M :=10^9 + 7
m :=(n ^ 0.5) + 2
P :=একটি নতুন তালিকা যেখানে A m বার তালিকা রয়েছে
1 থেকে m রেঞ্জের জন্য, করুন
j-এর জন্য n-1 থেকে -1 পরিসরে, 1 দ্বারা হ্রাস করুন, করুন
যদি i+j
P[i, j] :=(P[i, j]+P[i, i+j]) মডিউল M
প্রতিটি মানের জন্য b, k Q, do
যদি k
প্রত্যাবর্তন [সূচক P[k, b]]
অন্যথায়
[সাম(A[b থেকে k]) মডিউল M]
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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]