#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"; } |