本文主要是介绍CodeForces 805D Minimum number of steps,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目链接:http://codeforces.com/contest/805/problem/D
题意:给你一个字符串,你要对他进行操作,直至不能操作为止,操作的结果是,遇到ab字符串就把他变成bba,问你最少需要多少次操作
解析:其实变几个你大概就能发现规律了,ab->bba,abb->bbab->bbbba,你会发现a后面跟着几个b,那就需要变几次,而且变过以后,b的个数会翻一倍,并且放到了a的前面,所以会对前面有影响,于是你从后往前面看就好了
#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9+7;
int main(void)
{string a;cin>>a;int len = a.length();int cnt = 0,ans = 0;for(int i=len-1;i>=0;i--){if(a[i]=='a'){ans = (ans+cnt)%mod;cnt = (cnt*2)%mod;}elsecnt++;}printf("%d\n",ans);return 0;
}
这篇关于CodeForces 805D Minimum number of steps的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!