题目描述:
Problem Description
Young theoretical computer scientist Fxx get a string which contains lowercase letters only.
The string SS contains nn lowercase letters S_1S_2\ldots S_nS1S2…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, ki,j,k are adjacent into a geometric sequence.
2、S_i=Si='yy',S_j=,Sj='rr',S_k=,Sk='xx'.
3.Either j|i or j|k
Input
In the first line, there is an integer T(1\leq T\leq100)T(1≤T≤100) indicating the number of test cases.
TT lines follow, each line contains a string, which contains only lowercase letters.(The length of string will not exceed 1000010000).
Output
For each case, output the answer.
Sample Input
2
xyyrxx
yyrrxxxxx
Sample Output
0
2
题目分析:
水题,暴力过,注意4,2,1也算是等比数列
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
const int maxn=10005;
int T,num;
char s[maxn];
int main()
{
cin>>T;
while(T--)
{
cin>>s+1;
num=0;
for(int i=1;i<=strlen(s+1)/4;i++)
{
for(int j=2;i*j*j<=strlen(s+1);j++)
{
if((s[i]=='y'&&s[i*j]=='r'&&s[i*j*j]=='x')||(s[i]=='x'&&s[i*j]=='r'&&s[i*j*j]=='y'))
num++;
}
}
cout<<num<<endl;
}
return 0;
}