fork(2) download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int solve(int arr[] , int n , int k){
  5. unordered_map<int,int>mpp;
  6. mpp[0]++;
  7. int ans = 0;
  8.  
  9. int prefixSum = 0;
  10. for(int i=0;i<n;i++){
  11. prefixSum += arr[i];
  12. int x = ((prefixSum % k) + k)%k; // to handle negative
  13. ans += mpp[x];
  14. mpp[x]++;
  15. }
  16. return ans;
  17. }
  18.  
  19. int main() {
  20. int n;
  21. cin>>n;
  22. int arr[n];
  23. for(int i=0;i<n;i++){
  24. cin>>arr[i];
  25. }
  26.  
  27. int k;
  28. cin>>k;
  29.  
  30. cout<<"Number of subarrays divisible by k are : "<<solve(arr,n,k);
  31. return 0;
  32. }
Success #stdin #stdout 0s 5280KB
stdin
6
4 5 0 -2 -3 1
5
stdout
Number of subarrays divisible by k are : 7