#include <iostream> #include <string> #include <vector> using namespace std; bool samogloska(char x) { if(x != 'a' && x != 'e' && x != 'i' && x != 'o' && x != 'u' && x != 'y' ) return false; else return true; } int main() { long long i, p, liczba = 0, reszta = 0; //liczba - liczba możliwych fragmentów tekstu //reszta - powtarzające się fragmenty tekstu vector <long long> suma; vector <int> indexp; vector <long long> powtorki; string text; cin>>text; if(text.length() < 3) { cout<<0; return 0; } for(i = 0; i < text.length() - 2; i++) { if((samogloska(text[i]) && samogloska(text[i + 1]) && samogloska(text[i + 2])) || ((samogloska(text[i])==false && samogloska(text[i + 1])==false && samogloska(text[i + 2])==false))) { p = i; suma.push_back(1 + p + (text.length()-p-3) + ((text.length()-p-3)*p)); indexp.push_back(i); } } for(i = 1; i < indexp.size(); i++) { powtorki.push_back( 1 + (indexp[i-1]+1) * (text.length() - indexp[i]-3) + indexp[i - 1]); } for(i = 0; i < powtorki.size(); i++) { //cout<< powtorki[i] << endl; reszta += powtorki[i]; } for(i = 0; i < suma.size(); i++) { liczba += suma[i]; } cout << liczba - reszta ; 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 | #include <iostream> #include <string> #include <vector> using namespace std; bool samogloska(char x) { if(x != 'a' && x != 'e' && x != 'i' && x != 'o' && x != 'u' && x != 'y' ) return false; else return true; } int main() { long long i, p, liczba = 0, reszta = 0; //liczba - liczba możliwych fragmentów tekstu //reszta - powtarzające się fragmenty tekstu vector <long long> suma; vector <int> indexp; vector <long long> powtorki; string text; cin>>text; if(text.length() < 3) { cout<<0; return 0; } for(i = 0; i < text.length() - 2; i++) { if((samogloska(text[i]) && samogloska(text[i + 1]) && samogloska(text[i + 2])) || ((samogloska(text[i])==false && samogloska(text[i + 1])==false && samogloska(text[i + 2])==false))) { p = i; suma.push_back(1 + p + (text.length()-p-3) + ((text.length()-p-3)*p)); indexp.push_back(i); } } for(i = 1; i < indexp.size(); i++) { powtorki.push_back( 1 + (indexp[i-1]+1) * (text.length() - indexp[i]-3) + indexp[i - 1]); } for(i = 0; i < powtorki.size(); i++) { //cout<< powtorki[i] << endl; reszta += powtorki[i]; } for(i = 0; i < suma.size(); i++) { liczba += suma[i]; } cout << liczba - reszta ; return 0; } |