您的位置:首页 > 其它

bestcode ——连续字符统计

2016-10-01 20:58 190 查看


Find Q

 
 Accepts: 599
 
 Submissions: 778

 Time Limit: 2000/1000 MS (Java/Others)
 
 Memory Limit: 262144/131072 K (Java/Others)

Problem Description

Byteasar is addicted to the English letter 'q'. Now he comes across a string SS consisting
of lowercase English letters.
He wants to find all the continous substrings of SS,
which only contain the letter 'q'. But this string is really really long, so could you please write a program to help him?

Input

The first line of the input contains an integer T(1\leq
T\leq10)T(1≤T≤10),
denoting the number of test cases.
In each test case, there is a string SS,
it is guaranteed that SS only
contains lowercase letters and the length of SS is
no more than 100000100000.

Output

For each test case, print a line with an integer, denoting the number of continous substrings of SS,
which only contain the letter 'q'.

Sample Input

2
qoder
quailtyqqq


Sample Output

1
7


Statistic | Submit | Clarifications | Back

BestCoder Contest System 2.0

统计连续的q,然后加上(n-1)*n/2

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <algorithm>
#include <climits>
#include <cstring>
#include <string>
#include <set>
#include <map>
#include <queue>
#include <stack>
#include <vector>
#include <list>
#define rep(i,m,n) for(i=m;i<=n;i++)
#define rsp(it,s) for(set<int>::iterator it=s.begin();it!=s.end();it++)
#define mod 2009
#define INF 9999999999999
#define vi vector<int>
#define pb push_back
#define mp make_pair
#define fi first
#define se second
#define pi acos(-1.0)
#define pii pair<int,int>
#define Lson L, mid, rt<<1
#define Rson mid+1, R, rt<<1|1
const int maxn=5e2+10;
using namespace std;
typedef long long ll;
ll gcd(ll p,ll q){return q==0?p:gcd(q,p%q);}
ll qpow(ll p,ll q){ll f=1;while(q){if(q&1)f=f*p;p=p*p;q>>=1;}return f;}
ll my_min(ll x,ll y){ return x>y?y:x;};

int main()
{
int t;
char str[100005];
while(scanf("%d",&t)!=EOF)
{
for(int i=1;i<=t;i++)
{
unsigned long long re = 0;
memset(str,0,sizeof(str));
scanf("%s",str);
int len = strlen(str);
int k;
for(int j=0;j<len;j++)
{
if(str[j]=='q')
{
k=0;
while(str[j]=='q')
{
k++;
j++;
}
unsigned long long t1 = 0;
for(int l=1;l<=k;l++)
{
t1 +=l;
}
re+=t1;
j--;
}
}
printf("%llu\n",re);
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐