#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
typedef long long ll;
ll counter[2];
const ll nSam = 6;
char samogloski[6] = {'a', 'e', 'i', 'o', 'u', 'y'};
ll silnia (ll n)
{
ll res = 1;
for (ll i = 2; i <= n; i++)
{
res *= i;
}
return res;
}
ll newton (ll n, ll k)
{
if (n < k)
{
return 0;
}
ll res = 1;
for(ll i = n-k+1; i <= n; i++)
{
res *= i;
}
res /= silnia(k);
return res;
}
bool czySamogl (char a)
{
for(ll i = 0; i < nSam; i++)
{
if(a == samogloski[i])
{
return true;
}
}
return false;
}
int main()
{
ios_base::sync_with_stdio(0);
string ciag;
getline(cin, ciag);
ll n = ciag.size();
//cout << "Dlugosc: " << n << "\n";
ll wynik = n * (n-1) / 2;
ll a = 0;
for(ll i=0; i<n; i++)
{
ll chk = czySamogl(ciag[i]);
counter[chk]++;
counter[(chk + 1) % 2] = 0;
//cout << i << ": " << ciag[i] << " Spol: " << counter[0] << " Samogl: " << counter[1] << "\n";
if(counter[chk] == 3)
{
wynik -= newton(i - a, 2);
a = i-1;
counter[chk] = 2;
}
}
wynik -= newton(n - a, 2);
cout << wynik;// << "\n";
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 94 95 96 97 98 | #include <iostream> #include <algorithm> #include <vector> #include <string> using namespace std; typedef long long ll; ll counter[2]; const ll nSam = 6; char samogloski[6] = {'a', 'e', 'i', 'o', 'u', 'y'}; ll silnia (ll n) { ll res = 1; for (ll i = 2; i <= n; i++) { res *= i; } return res; } ll newton (ll n, ll k) { if (n < k) { return 0; } ll res = 1; for(ll i = n-k+1; i <= n; i++) { res *= i; } res /= silnia(k); return res; } bool czySamogl (char a) { for(ll i = 0; i < nSam; i++) { if(a == samogloski[i]) { return true; } } return false; } int main() { ios_base::sync_with_stdio(0); string ciag; getline(cin, ciag); ll n = ciag.size(); //cout << "Dlugosc: " << n << "\n"; ll wynik = n * (n-1) / 2; ll a = 0; for(ll i=0; i<n; i++) { ll chk = czySamogl(ciag[i]); counter[chk]++; counter[(chk + 1) % 2] = 0; //cout << i << ": " << ciag[i] << " Spol: " << counter[0] << " Samogl: " << counter[1] << "\n"; if(counter[chk] == 3) { wynik -= newton(i - a, 2); a = i-1; counter[chk] = 2; } } wynik -= newton(n - a, 2); cout << wynik;// << "\n"; return 0; } |
English