用Python找出数组中均匀间隔元素之和的程序

假设有一个包含正整数的大小为 n 的数组 'nums'。我们有另一个包含整数对 (pi, qi) 的数组“查询”。对于数组查询中的每个查询,答案将是数组 nums[j] 中数字的总和,其中 pi <= j < n 并且 (j - pi) 可以被 qi 整除。我们必须返回所有此类查询的答案,如果它是一个大值,我们将返回模 10^9 + 7 的答案。

因此,如果输入类似于 nums = [2, 3, 4, 5, 6, 7, 8, 9, 10],则查询 = [(2, 5), (7, 3), (6, 4)] ,那么输出将是 [13, 9, 8]。

示例

让我们看看以下实现以获得更好的理解 -

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]

以上是 用Python找出数组中均匀间隔元素之和的程序 的全部内容, 来源链接: utcz.com/z/357969.html

回到顶部