• Codeforces Round #411 div 2 D. Minimum number of steps


    D. Minimum number of steps

    time limit per test
    1 second
    memory limit per test
    256 megabytes
    input
    standard input
    output
    standard output
    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".
     
    解题思路:
    题意是输入一个字符串,将其中的ab改为bba,问需要变换多少次才能让字符串中没有ab
    由题可知,ab判断两种情况: 1.ab前面有a时的变化, 2.ab后面有b时的变化;
    具体解析放在代码中解释
     
    实现代码:
    #include<bits/stdc++.h>
    using namespace std;
    #define mod 1000000007
    char str[1000005];
    int main(){
        int n,total,a;
        scanf("%s",str);
            total = a = 0;
            int len = strlen(str);
            for(int i = 0;i < len;i++){
                if(str[i] == 'a'){   //由于只有a,b两个字母,只需判断是否为a
                    a = (2 * a + 1) % mod;  //由于数据太大,只能一步一步取模,若将b前面的a个数加起来用2^n-1公式求值,数字会由于太大,变成负数
                }else{
                    total = (total + a) % mod; //公式可自行推演,多推一下,很容易得出
                }
            }
            printf("%d
    ",total);
        return 0;
    }
  • 相关阅读:
    Xcode ARC,非ARC混搭
    Xcode GData库解析XML
    NSThread
    自定义UITableViewCell中的button实现视图切换
    UITableView
    iOS事件响应链
    结构体和NSData相互转换
    UIView的transform属性
    javascript垃圾回收机制
    ios8 滚动事件解放了
  • 原文地址:https://www.cnblogs.com/kls123/p/6814655.html
Copyright © 2020-2023  润新知