#include<bits/stdc++.h>
using namespace std;
int n;
int ucb[510];
long long pre[510];
multiset<long long> sums;
void mule(long long x){
auto it = sums.find(x);
if(it != sums.end()) sums.erase(it);
}
int main(){
cin.tie(0);
cout.tie(0);
ios_base::sync_with_stdio(false);
cin >> n;
for(int i = 1; i <= n; i++){
cin >> ucb[i];
}
for(int i = 1; i <= n; i++){
pre[i] = pre[i-1] + ucb[i];
}
// for(int p1 = 1; p1 <= n; p1++){
// for(int k1 = i; k1 <= n; k1++){
// sums.insert(pre[k1] - pre[p1-1]);
// }
// }
long long ans = 0;
long long tmp1,tmp2;
for(int p1 = 1; p1 <= n; p1++){
for(int k1 = p1; k1 <= n; k1++){
for(int p2 = 1; p2 <= n; p2++){
for(int k2 = p2; k2 <= n; k2++){
if(p1 == p2 && k1 == k2) continue;
for(int p3 = 1; p3 <= n; p3++){
for(int k3 = p3; k3 <= n; k3++){
if(p1 == p3 && k1 == k3) continue;
if(p3 == p2 && k3 == k2) continue;
if(pre[k3] + pre[k2] + pre[k1] - pre[p1-1]- pre[p2-1]- pre[p3-1] == 0) ans++;
}
}
// tmp1 = pre[k1] - pre[p1-1];
// tmp2 = pre[k2] - pre[p2-1];
// mule(tmp1);
// mule(tmp2);
// if(sums.find((tmp1 + tmp2) * -1) != sums.end()) ans ++;
}
}
}
}
cout << ans/6 << "\n";
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | #include<bits/stdc++.h> using namespace std; int n; int ucb[510]; long long pre[510]; multiset<long long> sums; void mule(long long x){ auto it = sums.find(x); if(it != sums.end()) sums.erase(it); } int main(){ cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(false); cin >> n; for(int i = 1; i <= n; i++){ cin >> ucb[i]; } for(int i = 1; i <= n; i++){ pre[i] = pre[i-1] + ucb[i]; } // for(int p1 = 1; p1 <= n; p1++){ // for(int k1 = i; k1 <= n; k1++){ // sums.insert(pre[k1] - pre[p1-1]); // } // } long long ans = 0; long long tmp1,tmp2; for(int p1 = 1; p1 <= n; p1++){ for(int k1 = p1; k1 <= n; k1++){ for(int p2 = 1; p2 <= n; p2++){ for(int k2 = p2; k2 <= n; k2++){ if(p1 == p2 && k1 == k2) continue; for(int p3 = 1; p3 <= n; p3++){ for(int k3 = p3; k3 <= n; k3++){ if(p1 == p3 && k1 == k3) continue; if(p3 == p2 && k3 == k2) continue; if(pre[k3] + pre[k2] + pre[k1] - pre[p1-1]- pre[p2-1]- pre[p3-1] == 0) ans++; } } // tmp1 = pre[k1] - pre[p1-1]; // tmp2 = pre[k2] - pre[p2-1]; // mule(tmp1); // mule(tmp2); // if(sums.find((tmp1 + tmp2) * -1) != sums.end()) ans ++; } } } } cout << ans/6 << "\n"; } |
English