1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > HDU 5944 Fxx and string BestCoder Round #89 1001(细节)

HDU 5944 Fxx and string BestCoder Round #89 1001(细节)

时间:2018-07-04 13:33:15

相关推荐

HDU 	5944  Fxx and string  BestCoder Round #89 1001(细节)

Fxx and string

Accepts: 213 Submissions: 1867 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/65536 K (Java/Others) 问题描述

青年理论计算机科学家Fxx得到了一个只包含小写字母的字符串。字符串的长度为\:nn,下标从1开始,第\:i\:i位的字母为\:s_is​i​​,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件1、i,j,k\:i,j,k三个数成等比数列2、s_i=s​i​​='yy',s_j=,s​j​​='rr',s_k=,s​k​​='xx'3.i/ji/j和k/jk/j中必须有整数

输入描述

第一行一个整数\:T(1\leq T\leq100)\:T(1≤T≤100)表示数据组数。接下来\:T\:T行,每行一个仅包含小写字母的字符串(字符串长度不超过\:1000010000)

输出描述

输出共\:T\:T行。每行一个整数表示答案。

输入样例

2xyyrxxyyrrxxxxx

输出样例

02

思路:读题的时候,看到i,j,k成等比数列难道没有疑问吗。。。到底是递增序列还是递减序列。。。读题能力太差。。。

代码:

#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <queue>#include <map>using namespace std;const int maxn = 1e5;char str[maxn];int main(){int t;scanf("%d", &t);while(t--){scanf("%s", str+1);str[0] = ' ';int ans = 0, len = strlen(str);// cout << len << endl;for(int i = 1; i < len; i++){if(str[i] == 'y'){for(int j = i * 2; j < len; j += i){if(str[j] == 'r'){int x = j * (j / i);if(x < len){if(str[x] == 'x')ans++;}}}}if(str[i] == 'x'){for(int j = i * 2; j < len; j += i){if(str[j] == 'r'){int x = j * (j / i);if(x < len){if(str[x] == 'y')ans++;}}}}}printf("%d\n", ans);}return 0;}Close

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。