https://leetcode.com/problems/subarray-sums-divisible-by-k/
class Solution:
def subarraysDivByK(self, nums: List[int], k: int) -> int:
N=len(nums)
sums = [0] * k
sums[0] += 1
cnt = 0
currSum = 0
for i in range(N):
currSum = (currSum + nums[i]%k + k)%k
cnt += sums[currSum]
sums[currSum]+=1
return cnt
https://leetcode.com/problems/subarray-sum-equals-k/
similar to #974
class Solution:
def subarraySum(self, nums: List[int], k: int) -> int:
pre = nums[:]
n = len(nums)
cnt = 0
d = defaultdict(list)
for i in range(n):
if i == 0:
prev = 0
else:
prev = pre[i-1]
pre[i] += prev
diff = pre[i] - k
if diff in d:
cnt += len(d[diff])
if pre[i] == k:
cnt += 1
d[pre[i]].append(i)
return cnt
https://leetcode.com/problems/make-sum-divisible-by-p/
similar to #974
https://leetcode.com/problems/count-number-of-bad-pairs/
similar to #947