题目链接:https://codeforces.com/contest/1084/problem/C
题目大意:给一个字符串,找出其中含有的符合要求的子串个数,要求是找出a的串,且每个a里面有个b
题目思路:想到了乘起来没想到+1....每一堆a中的情况为选其中一个a或者一个都不选,所以情况个数是a的个数+1,最后-1是因为去掉全不选的情况
以下是代码:
#include<bits/stdc++.h>
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<math.h>
using namespace std;
#define inf 0x3f3f3f3f
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define ll long long
const int MAXN = 1e5+5;
const int MOD = 1e9+7;
char s[MAXN];
int main(){
while(~scanf("%s",s)){
int len=strlen(s);
ll ans=1,cnt=1;
rep(i,0,len-1){
if(s[i]=='a'){
cnt++;
}
else if(s[i]=='b'){
ans=(ans*cnt)%MOD;
cnt=1;
}
}
ans=(ans*cnt-1+MOD)%MOD;
printf("%I64d\n",ans);
}
return 0;
}