//{ Driver Code Starts
// Initial Template for C++
#include <bits/stdc++.h>
using namespace std;
// } Driver Code Ends
// User function Template for C++
class Solution {
public:
int countSubarrays(vector<int> &arr, int k) {
// code here
int n=arr.size();
unordered_map<int,int>mp;
int count=0;
int sum=0;
mp[0]=1;
for(int i=0;i<n;i++){
sum+=arr[i];
if(mp.find(sum-k)!=mp.end()){
count+=mp[sum-k];
}
mp[sum]++;
}
return count;
}
};
//{ Driver Code Starts.
int main() {
int t;
cin >> t;
cin.ignore();
while (t--) {
string ks;
getline(cin, ks);
int k = stoi(ks);
vector<int> arr;
string input;
getline(cin, input);
stringstream ss(input);
int number;
while (ss >> number) {
arr.push_back(number);
}
Solution obj;
cout << obj.countSubarrays(arr, k);
cout << endl;
cout << "~"
<< "\n";
}
return 0;
}
// } Driver Code Ends
Ly97IERyaXZlciBDb2RlIFN0YXJ0cwovLyBJbml0aWFsIFRlbXBsYXRlIGZvciBDKysKI2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKLy8gfSBEcml2ZXIgQ29kZSBFbmRzCgovLyBVc2VyIGZ1bmN0aW9uIFRlbXBsYXRlIGZvciBDKysKCmNsYXNzIFNvbHV0aW9uIHsKICBwdWJsaWM6CiAgICBpbnQgY291bnRTdWJhcnJheXModmVjdG9yPGludD4gJmFyciwgaW50IGspIHsKICAgICAgICAvLyBjb2RlIGhlcmUKICAgICAgICBpbnQgbj1hcnIuc2l6ZSgpOwogICAgICAgIHVub3JkZXJlZF9tYXA8aW50LGludD5tcDsKICAgICAgICBpbnQgY291bnQ9MDsKICAgICAgICBpbnQgc3VtPTA7CiAgICAgICAgbXBbMF09MTsKICAgICAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICAgICAgc3VtKz1hcnJbaV07CiAgICAgICAgICAgIGlmKG1wLmZpbmQoc3VtLWspIT1tcC5lbmQoKSl7CiAgICAgICAgICAgICAgICBjb3VudCs9bXBbc3VtLWtdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG1wW3N1bV0rKzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGNvdW50OwogICAgfQp9OwoKCi8veyBEcml2ZXIgQ29kZSBTdGFydHMuCgppbnQgbWFpbigpIHsKCiAgICBpbnQgdDsKICAgIGNpbiA+PiB0OwogICAgY2luLmlnbm9yZSgpOwogICAgd2hpbGUgKHQtLSkgewoKICAgICAgICBzdHJpbmcga3M7CiAgICAgICAgZ2V0bGluZShjaW4sIGtzKTsKICAgICAgICBpbnQgayA9IHN0b2koa3MpOwogICAgICAgIHZlY3RvcjxpbnQ+IGFycjsKICAgICAgICBzdHJpbmcgaW5wdXQ7CiAgICAgICAgZ2V0bGluZShjaW4sIGlucHV0KTsKICAgICAgICBzdHJpbmdzdHJlYW0gc3MoaW5wdXQpOwogICAgICAgIGludCBudW1iZXI7CiAgICAgICAgd2hpbGUgKHNzID4+IG51bWJlcikgewogICAgICAgICAgICBhcnIucHVzaF9iYWNrKG51bWJlcik7CiAgICAgICAgfQogICAgICAgIFNvbHV0aW9uIG9iajsKICAgICAgICBjb3V0IDw8IG9iai5jb3VudFN1YmFycmF5cyhhcnIsIGspOwogICAgICAgIGNvdXQgPDwgZW5kbDsKICAgICAgICBjb3V0IDw8ICJ+IgogICAgICAgICAgICAgPDwgIlxuIjsKICAgIH0KCiAgICByZXR1cm4gMDsKfQoKLy8gfSBEcml2ZXIgQ29kZSBFbmRz