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