#include <bits/stdc++.h> using namespace std; int l[150]; int tab[200005]; int main() { ios_base::sync_with_stdio(0); l[97]=1; l[101]=1; l[105]=1; l[111]=1; l[117]=1; l[121]=1; string a; cin>>a; long long s=a.size(); long long wynik=(s*(s+1))/2; wynik-=s+s-1; //cout<<wynik<<endl; for(int i=0;i<s-2;i++){ if(l[(int)a[i]]==l[(int)a[i+1]]&&l[(int)a[i]]==l[(int)a[i+2]])tab[i]=1; } //for(int i=0;i<s-2;i++)cout<<tab[i]<<endl; long long ile=0; long long last=-1; for(int i=0;i<s-2;i++){ if(last==-1){ last=tab[i]; ile=1; } else if(last==tab[i]){ ile++; } else{ if(last==0) wynik-=(ile*(ile+1))/2; ile=1; last=tab[i]; } } if(last==0)wynik-=(ile*(ile+1))/2; cout<<wynik; }
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 | #include <bits/stdc++.h> using namespace std; int l[150]; int tab[200005]; int main() { ios_base::sync_with_stdio(0); l[97]=1; l[101]=1; l[105]=1; l[111]=1; l[117]=1; l[121]=1; string a; cin>>a; long long s=a.size(); long long wynik=(s*(s+1))/2; wynik-=s+s-1; //cout<<wynik<<endl; for(int i=0;i<s-2;i++){ if(l[(int)a[i]]==l[(int)a[i+1]]&&l[(int)a[i]]==l[(int)a[i+2]])tab[i]=1; } //for(int i=0;i<s-2;i++)cout<<tab[i]<<endl; long long ile=0; long long last=-1; for(int i=0;i<s-2;i++){ if(last==-1){ last=tab[i]; ile=1; } else if(last==tab[i]){ ile++; } else{ if(last==0) wynik-=(ile*(ile+1))/2; ile=1; last=tab[i]; } } if(last==0)wynik-=(ile*(ile+1))/2; cout<<wynik; } |