#include <cstdio> #include <string.h> using namespace std; int T[300]; char A[1000000]; long long calc(long long b, long long e) { e -= b; if (e<=0) return 0; return e*(e+1)/2; } int main() { for (int i=0; i<256; i++) T[i]=0; T['a']=T['e']=T['i']=T['o']=T['u']=T['y']=1; scanf("%s", A); long long n = strlen(A); if (n <= 2) { printf("0\n"); return 0; } long long c = 0; long long p = -1; for (long long i=0; i<=n-3; i++) if (T[A[i]]==T[A[i+1]] && T[A[i+1]]==T[A[i+2]]) { if (p<0) c += calc(0, i); else { if (p+3<i) { c += calc(p, i-1); } } p=i; } if (p<0) c += calc(0, n-2); else c += calc(p, n-3); printf("%lld\n", (n-2)*(n-1)/2-c); 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 | #include <cstdio> #include <string.h> using namespace std; int T[300]; char A[1000000]; long long calc(long long b, long long e) { e -= b; if (e<=0) return 0; return e*(e+1)/2; } int main() { for (int i=0; i<256; i++) T[i]=0; T['a']=T['e']=T['i']=T['o']=T['u']=T['y']=1; scanf("%s", A); long long n = strlen(A); if (n <= 2) { printf("0\n"); return 0; } long long c = 0; long long p = -1; for (long long i=0; i<=n-3; i++) if (T[A[i]]==T[A[i+1]] && T[A[i+1]]==T[A[i+2]]) { if (p<0) c += calc(0, i); else { if (p+3<i) { c += calc(p, i-1); } } p=i; } if (p<0) c += calc(0, n-2); else c += calc(p, n-3); printf("%lld\n", (n-2)*(n-1)/2-c); return 0; } |