#include <bits/stdc++.h>
#define lld long long int
using namespace std;
bool XD[27]={0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1};
char tab[200010];
lld licz;
lld xd=0;
lld w=0;
int main()
{
scanf("%s",tab);
if(strlen(tab)<3)
{
printf("0");
return 0;
}
licz=3;
for(lld i = 2;i<strlen(tab);++i)
{
// cout << i << " " << licz << endl;
if(XD[(int)tab[i]-97] == XD[(int)tab[i-1]-97] and XD[(int)tab[i]-97]== XD[(int)tab[i-2]-97])
{
++xd;
--licz;
w+=(licz*(licz+1))/2;
licz=2;
}
++licz;
// cout << w << " w " << endl;
}
--licz;
w+=(licz*(licz+1))/2;
w-=xd;
lld pom = strlen(tab);
printf("%lld",(pom*(pom+1))/2-w);
}
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 | #include <bits/stdc++.h> #define lld long long int using namespace std; bool XD[27]={0,1,1,1,0,1,1,1,0,1,1,1,1,1,0,1,1,1,1,1,0,1,1,1,0,1}; char tab[200010]; lld licz; lld xd=0; lld w=0; int main() { scanf("%s",tab); if(strlen(tab)<3) { printf("0"); return 0; } licz=3; for(lld i = 2;i<strlen(tab);++i) { // cout << i << " " << licz << endl; if(XD[(int)tab[i]-97] == XD[(int)tab[i-1]-97] and XD[(int)tab[i]-97]== XD[(int)tab[i-2]-97]) { ++xd; --licz; w+=(licz*(licz+1))/2; licz=2; } ++licz; // cout << w << " w " << endl; } --licz; w+=(licz*(licz+1))/2; w-=xd; lld pom = strlen(tab); printf("%lld",(pom*(pom+1))/2-w); } |
English