fork download
  1. #include <iostream>
  2. #include<vector>
  3. #include<unordered_map>
  4. using namespace std;
  5.  
  6. int main() {
  7. vector<int> nums = {1,3,2,4};
  8. int k = 4;
  9. int n = nums.size();
  10.  
  11. unordered_map<int,int> m;
  12. vector<int> prefix(n + 1, 0);
  13. int count = 0;
  14.  
  15. for(int i = 1; i < n; i++) {
  16. prefix[i] = prefix[i-1] + nums[i];
  17. }
  18.  
  19. m[0] = 1;
  20.  
  21. for(int j = 1; j <= n; j++) {
  22. int RHS = ((prefix[j] - j) % k + k) % k;
  23.  
  24. count += m[RHS];
  25.  
  26. int LHS = ((prefix[j-1] - j) % k + k) % k;
  27. m[LHS]++;
  28. }
  29.  
  30. cout << count;
  31. return 0;
  32. }
Success #stdin #stdout 0.01s 5320KB
stdin
Standard input is empty
stdout
3