কম্পিউটার

পাইথনে একটি অ্যারেতে সমানভাবে ব্যবধানযুক্ত উপাদানগুলির যোগফল খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন, ধনাত্মক পূর্ণসংখ্যা সম্বলিত 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]

  1. পাইথন প্রোগ্রামে অ্যারের সমষ্টি খুঁজুন

  2. পাইথন প্রোগ্রাম একটি অ্যারের বৃহত্তম উপাদান খুঁজে বের করতে

  3. পাইথন প্রোগ্রাম তালিকায় উপাদানের যোগফল খুঁজে বের করতে

  4. অ্যারের যোগফল খুঁজে পেতে পাইথন প্রোগ্রাম