在 Python 中使 sum 可被 P 整除的程序
假设我们有一个数组nums和另一个值p,我们删除最小的子数组(不是整个数组),使得剩余值的总和可以被p整除。我们必须找到我们需要删除的最小子数组的长度,如果没有这样的子数组,则返回-1。
因此,如果输入类似于nums=[8,2,6,5,3]p=7,那么输出将为1,因为如果我们删除3,则总和将为21,并且可以被7整除。
示例
让我们看看以下实现以获得更好的理解-
def solve(nums, p):
ans = float("inf")
s = sum(nums) % p
d = {0:-1}
cum = 0
if s == 0:
return 0
for i in range(len(nums)):
cum+=nums[i]
r = cum%p
if (r-s)%p in d:
ans = min(ans, i-d[(r-s)%p])
d[r] = i
return ans if ans输入
[8,2,6,5,3], 7
输出结果1