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