Link: https://leetcode.com/problems/count-of-interesting-subarrays/description/ ## 思路 We don't care about the value of ```num``` in ```nums```, what we care is whether ```num%modulo==k``` We subsitite ```num``` who satisfies ```num%modulo==k``` with 1, otherwise 0, and we compute the prefix sum If the current prefix sum is ```currPrefixCnt```, and we want to get how many subarrays ending with current number has cnt which ```cnt%modulo==k```, we just need to find out how many positions before this position have prefixCnt that ```(currPrefixCnt-prefixCnt)%modulo==k``` ## Code ```python= class Solution: def countInterestingSubarrays(self, nums: List[int], modulo: int, k: int) -> int: ans = prefixCnt = 0 count = collections.defaultdict(int) count[0] = 1 for num in nums: prefixCnt += 1 if num%modulo == k else 0 prefixCnt %= modulo ans += count[(prefixCnt-k+modulo)%modulo] count[prefixCnt] += 1 return ans ```