

class Solution {
public:
int subarraysDivByK(vector<int>& nums, int k)
{
int sum = 0,ret = 0;
unordered_map<int,int> hash;
hash[0] = 1;
for(auto& e : nums)
{
sum += e;
if(hash.count((sum%k+k)%k))
{
ret += hash[(sum%k+k)%k];
}
hash[(sum%k+k)%k]++;
}
return ret;
}
};