前缀和
- 哈希表
#include <iostream>
#include <vector>
#include <cstring>
#include <unordered_map>
using namespace std;
const int N = 3e5+5;
int nums[N];
int sum[N];
int main(){
int n;
cin>>n;
memset(nums, 0, sizeof nums);
unordered_map<int, int> mp;
mp[0] = 1;
memset(sum, 0, sizeof sum);
for(int i = 0; i < n; i++){
cin >> nums[i];
sum[i+1] = sum[i] + nums[i];
}
int x;
cin>>x;
int ans = 0;
for(int i = 1; i <= n; i++){
ans += mp[sum[i]-x];
mp[sum[i]]++;
}
cout<<ans<<endl;
return 0;
}