用 Python 编写程序,查找和能被 k 整除的连续子序列的数量

pythonserver side programmingprogramming更新于 2026/2/1 5:00:17

假设我们有一个数组 nums 和一个值 k。我们必须找到连续子序列的数量,其和可以被 k 整除。

因此,如果输入为 k = 3 nums = [1,2,3,4,1],则输出将为 4,因为子序列为 [3]、[1,2]、[1,2,3] 和 [2,3,4]。

为了解决这个问题,我们将遵循以下步骤 −

  • x := 大小为 k 的数组并用 0 填充
  • x[0] := 1
  • r:= 0, s:= 0
  • 对于 nums 中的每个元素,执行
    • s :=(s + elem) mod k
    • r := r + x[s]
    • x[s] := x[s] + 1
  • 返回 R

示例

让我们看看下面的实现以便更好地理解 −

def solve(k, nums):
   x = [0]*k
   x[0] = 1
   r=s=0
   for elem in nums:
      s = (s+elem) % k
      r += x[s]
      x[s] += 1
   return r

k = 3
nums = [1,2,3,4,1]
print(solve(k, nums))

输入

3, [1,2,3,4,1]

输出

4

相关文章


有用资源