题目:
http://codeforces.com/contest/1084/problem/C
网上大神很多。。
方法一:
方法二:
方法一代码:
//3
#include<stdio.h>
#include<string.h>
#include<iostream>
using namespace std;
#define MAXN 100010
#define MOD 1000000007
typedef long long LL;
char Temp[MAXN];
int sum[MAXN];
int main()
{
int i;
int len;
int cnt,num;
int pre;//记录上一个b的位置
LL ans;
scanf("%s",Temp);
len=strlen(Temp);
cnt=num=0;
pre=0;
for(i=0;i<len;i++)
{
if(Temp[i]=='a'||Temp[i]=='b')
{
num++;
if(Temp[i]=='b')
{
sum[++cnt]=num-1-pre;
pre=num;
}
}
}
sum[++cnt]=num-pre;
ans=1;
for(i=1;i<=cnt;i++)
{
ans=(ans*(1+sum[i]))%MOD;
}
ans-=1;
cout<<ans<<endl;
return 0;
}
方法二:
大佬的代码(想不到。。。。):