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