#include <iostream>
#include <algorithm>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <stack>
#include <vector>
#include <functional>
#include <bits/stdc++.h>
#include <sstream>
#include <iomanip>
#include <cmath>
#include <cctype>
#include <bitset>
using namespace std;
vector <int> liczby;
vector <int> ciag;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int ile, liczba;
int zera=1, dodatnie=1;
int ile_trojek;
cin >> ile;
for (int n=1; n<=ile; n++)
{
cin >> liczba;
liczby.push_back(liczba);
}
//for (int n=0; n<ile; n++)
// cout << liczby[n] << endl;
//cout << endl;
int ile_c=0;
for (int n=0; n<ile; n++)
{
int suma=liczby[n];
ciag.push_back(suma);
if (suma!=0)
zera=0;
if (suma<=0)
dodatnie=0;
// cout << suma << endl;
for (int k=n+1; k<ile; k++)
{
suma=suma+liczby[k];
ciag.push_back(suma);
if (suma!=0)
zera=0;
if (suma<=0)
dodatnie=0;
// cout << suma << endl;
}
}
if (zera==1)
{
ile_trojek=(ile*(ile+1))/2;
ile_trojek=((ile_trojek-2)*(ile_trojek-1)*(ile_trojek))/6;
cout << ile_trojek;
}
else
if (dodatnie==1)
cout <<0;
else
{
ile_trojek=0;
int suma=0;
for (int i = 0; i < ciag.size() - 2; i++)
{
for (int j = i + 1; j < ciag.size() - 1; j++)
{
for (int k = j + 1; k < ciag.size(); k++)
{
if (ciag[i] + ciag[j] + ciag[k] == suma)
{
// cout << "Trojka " << ciag[i] << ", " << ciag[j] << ", " << ciag[k];
// cout << endl;
ile_trojek=ile_trojek+1;
}
}
}
}
cout << ile_trojek;
}
return 0;
}
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 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | #include <iostream> #include <algorithm> #include <string> #include <cstdio> #include <cstdlib> #include <stack> #include <vector> #include <functional> #include <bits/stdc++.h> #include <sstream> #include <iomanip> #include <cmath> #include <cctype> #include <bitset> using namespace std; vector <int> liczby; vector <int> ciag; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); int ile, liczba; int zera=1, dodatnie=1; int ile_trojek; cin >> ile; for (int n=1; n<=ile; n++) { cin >> liczba; liczby.push_back(liczba); } //for (int n=0; n<ile; n++) // cout << liczby[n] << endl; //cout << endl; int ile_c=0; for (int n=0; n<ile; n++) { int suma=liczby[n]; ciag.push_back(suma); if (suma!=0) zera=0; if (suma<=0) dodatnie=0; // cout << suma << endl; for (int k=n+1; k<ile; k++) { suma=suma+liczby[k]; ciag.push_back(suma); if (suma!=0) zera=0; if (suma<=0) dodatnie=0; // cout << suma << endl; } } if (zera==1) { ile_trojek=(ile*(ile+1))/2; ile_trojek=((ile_trojek-2)*(ile_trojek-1)*(ile_trojek))/6; cout << ile_trojek; } else if (dodatnie==1) cout <<0; else { ile_trojek=0; int suma=0; for (int i = 0; i < ciag.size() - 2; i++) { for (int j = i + 1; j < ciag.size() - 1; j++) { for (int k = j + 1; k < ciag.size(); k++) { if (ciag[i] + ciag[j] + ciag[k] == suma) { // cout << "Trojka " << ciag[i] << ", " << ciag[j] << ", " << ciag[k]; // cout << endl; ile_trojek=ile_trojek+1; } } } } cout << ile_trojek; } return 0; } |
English