Fxx and string
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others)
Total Submission(s): 507 Accepted Submission(s): 224
Problem Description
Young theoretical computer scientist Fxx get a string which contains lowercase letters only.
The string S contains n lowercase letters S1S2…Sn .Now Fxx wants to know how many three tuple (i,j,k) there are which can meet the following conditions:
1、i,j,k are adjacent into a geometric sequence.
2、Si= 'y ',Sj= 'r ',Sk= 'x '.
3.Either j|i or j|k
The string S contains n lowercase letters S1S2…Sn .Now Fxx wants to know how many three tuple (i,j,k) there are which can meet the following conditions:
1、i,j,k are adjacent into a geometric sequence.
2、Si= 'y ',Sj= 'r ',Sk= 'x '.
3.Either j|i or j|k
Input
In the first line, there is an integer T(1≤T≤100)
indicating the number of test cases.
T lines follow, each line contains a string, which contains only lowercase letters.(The length of string will not exceed 10000 ).
T lines follow, each line contains a string, which contains only lowercase letters.(The length of string will not exceed 10000 ).
Output
For each case, output the answer.
Sample Input
2
xyyrxx
yyrrxxxxx
Sample Output
0
2
Source
题意:
题解:给你一个字符串暴力求 有多少组 ‘y’ ‘r’ ‘x’ 位置成等比数列 注意逆序!
1 /****************************** 2 code by drizzle 3 blog: www.cnblogs.com/hsd-/ 4 ^ ^ ^ ^ 5 O O 6 ******************************/ 7 #include<bits/stdc++.h> 8 #include<map> 9 #include<set> 10 #include<cmath> 11 #include<queue> 12 #include<bitset> 13 #include<math.h> 14 #include<vector> 15 #include<string> 16 #include<stdio.h> 17 #include<cstring> 18 #include<iostream> 19 #include<algorithm> 20 #pragma comment(linker, "/STACK:102400000,102400000") 21 using namespace std; 22 #define A first 23 #define B second 24 const int mod=1000000007; 25 const int MOD1=1000000007; 26 const int MOD2=1000000009; 27 const double EPS=0.00000001; 28 typedef __int64 ll; 29 const ll MOD=1000000007; 30 const int INF=1000000010; 31 const ll MAX=1ll<<55; 32 const double eps=1e-8; 33 const double inf=~0u>>1; 34 const double pi=acos(-1.0); 35 typedef double db; 36 typedef unsigned int uint; 37 typedef unsigned long long ull; 38 int t; 39 char a[10005]; 40 int main() 41 { 42 scanf("%d",&t); 43 for(int i=1;i<=t;i++) 44 { 45 int sum=0; 46 scanf("%s",a+1); 47 int len=strlen(a+1); 48 for(int j=1;j<=len;j++) 49 { 50 if(a[j]=='y') 51 { 52 for(int k=2;;k++) 53 { 54 if(j*k*k>len) 55 break; 56 if(a[j*k]=='r'&&a[j*k*k]=='x') 57 { 58 sum++; 59 } 60 } 61 } 62 if(a[j]=='x') 63 { 64 for(int k=2;;k++) 65 { 66 if(j*k*k>len) 67 break; 68 if(a[j*k]=='r'&&a[j*k*k]=='y') 69 { 70 sum++; 71 } 72 } 73 } 74 } 75 printf("%d\n",sum); 76 } 77 return 0; 78 }