Young theoretical computer scientist Fxx get a string which contains lowercase letters only.
The string S S contains n n lowercase letters S1S2…Sn S1S2…Sn.Now Fxx wants to know how many three tuple (i,j,k) (i,j,k) there are which can meet the following conditions:
1、 i,j,k i,j,k are adjacent into a geometric sequence.
2、 Si= Si=' y y' ,Sj= ,Sj=' r r' ,Sk= ,Sk=' x x'.
3.Either j|i or j|k
Input
In the first line, there is an integer
T(1≤T≤100)
T(1≤T≤100) indicating the number of test cases.
T T lines follow, each line contains a string, which contains only lowercase letters.(The length of string will not exceed 10000 10000).
Output
For each case, output the answer.
Sample Input
The string S S contains n n lowercase letters S1S2…Sn S1S2…Sn.Now Fxx wants to know how many three tuple (i,j,k) (i,j,k) there are which can meet the following conditions:
1、 i,j,k i,j,k are adjacent into a geometric sequence.
2、 Si= Si=' y y' ,Sj= ,Sj=' r r' ,Sk= ,Sk=' x x'.
3.Either j|i or j|k
Input
T T lines follow, each line contains a string, which contains only lowercase letters.(The length of string will not exceed 10000 10000).
2xyyrxxyyrrxxxxx
0 2
#include<iostream>
#include<cstring>
#include<vector>
#include<cstdio>
#include<algorithm>
#include<cmath>
using namespace std;
int main()
{
int t;
char st[10000];
while (cin >> t)
{
while (t--)
{
int sum = 0;
scanf("%s", st);//用cin会超时
int L = strlen(st);
for (int i = 0; i < L; i++)
{
int r = i + 1;
for (int j = 2;; j++)
{
int k = r*j;
int l = k*j;
if (l > L)break;
if (st[r - 1] == 'y'&&st[k - 1] == 'r'&&st[l - 1] == 'x')sum++;
if (st[r - 1] == 'x'&&st[k - 1] == 'r'&&st[l - 1] == 'y')sum++;
}
}
cout << sum << endl;
}
}
return 0;
}