Codeforces Round #411 D. Minimum number of steps (贪心。)
来源:互联网 发布:数据分析师职业规划 编辑:程序博客网 时间:2024/05/01 01:57
We have a string of letters ‘a’ and ‘b’. We want to perform some operations on it. On each step we choose one of substrings “ab” in the string and replace it with the string “bba”. If we have no “ab” as a substring, our job is done. Print the minimum number of steps we should perform to make our job done modulo 109 + 7.
The string “ab” appears as a substring if there is a letter ‘b’ right after the letter ‘a’ somewhere in the string.
Input
The first line contains the initial string consisting of letters ‘a’ and ‘b’ only with length from 1 to 106.
Output
Print the minimum number of steps modulo 109 + 7.
Examples
input
ab
output
1
input
aab
output
3
Note
The first example: “ab” → “bba”.
The second example: “aab” → “abba” → “bbaba” → “bbbbaa”.
参考http://blog.csdn.net/dormousenone/article/details/71190792
**#解题思路
根据题意,转换规则如下:
ab→bba
abb→bbbba
abbb→bbbbbba**
#include<bits/stdc++.h>using namespace std;const int mod = 1e9 + 7;char s[1000010];int main(){ scanf(" %s",s); int len = strlen(s); long long cntb = 0, ans = 0; for(int i=len-1;i>=0;--i) { if(s[i] == 'a') { (ans += cntb) %= mod; (cntb *= 2) %= mod; } else { cntb++; } } printf("%I64d\n", ans%mod);}
- Codeforces Round #411 D. Minimum number of steps (贪心。)
- Codeforces Round #411 D. Minimum number of steps
- Codeforces Round #411 (Div. 2) D. Minimum number of steps
- Codeforces Round #411 (Div. 2) D. Minimum number of steps
- Codeforces Round #411 (Div. 2) D. Minimum number of steps
- Codeforces Round #411 D. Minimum number of steps (思维题)
- Codeforces Round #411 (Div. 2) D. Minimum number of steps(思维题目)
- Codeforces Round #411(Div. 2)D. Minimum number of steps【思维递推+快速幂】
- Codeforces Round #411 D. Minimum number of steps【逆向思维+模拟】
- Codeforces 805D Minimum number of steps
- CodeForces 805D Minimum number of steps
- 【Codeforces 805】D. Minimum number of steps
- Codeforces-804 B. Minimum number of steps(贪心+规律)
- codeforces 805D Minimum number of steps (水题)
- Codeforces Round #411(A. Fake NP; B. 3-palindrome; C. Find Amir; D.Minimum number of steps)
- 【Codeforces Round #411 (Div. 1)】Codeforces 804B Minimum number of steps
- codeforces 804B——Minimum number of steps(模拟,贪心)
- CF Round #411 (Div. 2) Minimum number of steps
- 3528:最小新整数
- HDU1251 统计难题【字典树】
- 乐观锁和悲观锁
- 基于FPGA的CORDIC算法实现——Verilog版
- 传递函数依赖
- Codeforces Round #411 D. Minimum number of steps (贪心。)
- Android(root)设备HTTPS请求时间校准
- Eclipse中安装Hibernate的插件
- kafka + spark streaming 实时读取计算 nginx 日志,存储结果到 mongodb/mysql
- FZU2283-Tic-Tac-Toe
- Gradle 中 buildConfigField的巧妙应用
- 2016-2017年终总结-特遣人生
- 浅谈memmove 和 memcpy的区别
- 原码反码补码的详解以及java中>>和>>>的区别