HDU 5944 Fxx and string(數學)
阿新 • • 發佈:2019-01-10
問題描述
青年理論電腦科學家Fxx得到了一個只包含小寫字母的字串。 字串的長度為n,下標從1開始,第i位的字母為si,現在Fxx想知道有多少三元組(i,j,k)滿足下列條件 1、i,j,k三個數成等比數列 2、si='y',sj='r',sk='x' 3.i/j和k/j中必須有整數輸入描述
第一行一個整數T(1≤T≤100)表示資料組數。 接下來T行,每行一個僅包含小寫字母的字串(字串長度不超過10000)輸出描述
輸出共 T行。
每行一個整數表示答案。
輸入樣例
2 xyyrxx yyrrxxxxx輸出樣例
0 2
注意:公比可能小於一
程式碼如下:
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; char a[100010]; int main() { int t; scanf("%d",&t); while(t--) { scanf("%s",a); int len=strlen(a); int q,i,j,k; int num=0; for(int p=0;p<len;p++) { int i=p+1; for(q=2;;q++) { j=i*q; k=j*q; if(k>len) break; if(a[i-1]=='y'&&a[j-1]=='r'&&a[k-1]=='x') { num++; } if(a[i-1]=='x'&&a[j-1]=='r'&&a[k-1]=='y')//公比小於1的情況 { num++; } } } printf("%d\n",num); } }