CodeForces
来源:互联网 发布:佳能打印机清零软件 编辑:程序博客网 时间:2024/06/01 07:20
题解:从后往前扫你会发现每个a后面有多少个b就要变多少次,接着b的个数就会翻倍
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<set>#include<vector>#include<queue>#include<stack>#include<map>using namespace std;#define rep(a,b) for(int i = a; i <= b; i++)#define dec(a,b) for(int i = a; i >= b; i--)#define root 1,1,n#define ls 2*rt#define rs 2*rt+1#define mid (L+R)/2#define lson ls,L,mid#define rson rs,mid+1,R#define fi first#define se secondtypedef long long int ll;const int mx = 1e6+5; const ll mod = 1e9+7;char s[mx];int main(){scanf("%s",s);int len = strlen(s);ll ans = 0;ll m = 0;for(int i = len-1; i >= 0; i--){if(s[i]=='b')m++;else if(s[i]=='a'){ans = (ans+m)%mod;m = m*2%mod;//cout<<ans<<endl;}}printf("%lld\n",ans);return 0;}
阅读全文