#include<iostream>#include<vector>#include<map>usingnamespace std;// 方法一:枚举,超出时间限制 intsubarraySum1(vector<int>& nums,int k){int n = nums.size();if(n ==0){return0;}int res =0, sum =0;for(int i =0; i < n; i++){for(int j = i; j >=0; j--){
sum += nums[j];if(sum == k){
res++;}}
sum =0;}return res;}// 方法二:枚举加前缀和intsubarraySum(vector<int>& nums,int k){int n = nums.size();if(n ==0){return0;}int pre =0, res =0;
map<int,int> mp;
mp[0]=1;for(int i =0; i < n; i++){
pre += nums[i];if(mp.count(pre-k)){
res += mp[pre-k];}
mp[pre]++;}return res;}intmain(){int n, k, res;
cin>>n>>k;
vector<int>nums(n);for(int i =0; i < n; i++){
cin>>nums[i];}
res =subarraySum(nums, k);
cout<<res;return0;}