#include <cstdlib> #include <iostream> #include <string> // samogłoski: a, e, i, o, u, y using namespace std; string napis; int samo[30]; // 1 - samogłoska, 0 - spółgłoska long long podciagi(long long n){ if(n<3) return 0; long long out = (n-2)*(n-1); return out/2; } int main(int argc, char** argv) { long long n, ile=0, dl; for(int j=0;j<30;j++) samo[j] = 0; samo['a'-'a'] = 1; samo['e'-'a'] = 1; samo['i'-'a'] = 1; samo['o'-'a'] = 1; samo['u'-'a'] = 1; samo['y'-'a'] = 1; getline(cin, napis); n = napis.length(); ile = podciagi(n); int seriaDl[2] = {0}; int pierwszyDobry = 0; for(int i=0; i<n; i++){ int typ = samo[napis[i]-'a']; seriaDl[typ]++; if(seriaDl[1-typ]>=3){ pierwszyDobry = i-2; } seriaDl[1-typ] = 0; if(seriaDl[typ] == 3){ ile -= podciagi( i - pierwszyDobry ); } } if(seriaDl[0]+seriaDl[1]<3) ile -= podciagi( n - pierwszyDobry ); cout << ile << endl; 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 | #include <cstdlib> #include <iostream> #include <string> // samogłoski: a, e, i, o, u, y using namespace std; string napis; int samo[30]; // 1 - samogłoska, 0 - spółgłoska long long podciagi(long long n){ if(n<3) return 0; long long out = (n-2)*(n-1); return out/2; } int main(int argc, char** argv) { long long n, ile=0, dl; for(int j=0;j<30;j++) samo[j] = 0; samo['a'-'a'] = 1; samo['e'-'a'] = 1; samo['i'-'a'] = 1; samo['o'-'a'] = 1; samo['u'-'a'] = 1; samo['y'-'a'] = 1; getline(cin, napis); n = napis.length(); ile = podciagi(n); int seriaDl[2] = {0}; int pierwszyDobry = 0; for(int i=0; i<n; i++){ int typ = samo[napis[i]-'a']; seriaDl[typ]++; if(seriaDl[1-typ]>=3){ pierwszyDobry = i-2; } seriaDl[1-typ] = 0; if(seriaDl[typ] == 3){ ile -= podciagi( i - pierwszyDobry ); } } if(seriaDl[0]+seriaDl[1]<3) ile -= podciagi( n - pierwszyDobry ); cout << ile << endl; return 0; } |