C. The Fair Nut and String(思维)

版权声明:本文为博主原创文章,转载请说明出处。 https://blog.csdn.net/xianpingping/article/details/84963516

C. The Fair Nut and String

time limit per test

1 second

memory limit per test

256 megabytes

input

standard input

output

standard output

The Fair Nut found a string s

. The string consists of lowercase Latin letters. The Nut is a curious guy, so he wants to find the number of strictly increasing sequences p1,p2,…,pk

, such that:

  1. For each i

(1≤i≤k), spi=

  • 'a'.
  • For each i
  • (1≤i<k), there is such j that pi<j<pi+1 and sj=
    1. 'b'.

    The Nut is upset because he doesn't know how to find the number. Help him.

    This number should be calculated modulo 109+7

    .

    Input

    The first line contains the string s

    (1≤|s|≤105

    ) consisting of lowercase Latin letters.

    Output

    In a single line print the answer to the problem — the number of such sequences p1,p2,…,pk

    modulo 109+7

    .

    Examples

    Input

    Copy

    abbaa
    
    Output

    Copy

    5
    Input

    Copy

    baaaa
    
    Output

    Copy

    4
    Input

    Copy

    agaa
    
    Output

    Copy

    3

    Note

    In the first example, there are 5

    possible sequences. [1], [4], [5], [1,4], [1,5]

    .

    In the second example, there are 4

    possible sequences. [2], [3], [4], [5]

    .

    In the third example, there are 3

    possible sequences. [1], [3], [4]

    .

  • 题意:题意就是选择一段下标递增的子序列,要求满足任意一个都是a,然后中间(不在子序列中的要有一个b)

  • 思路:可以这么考虑,假设是abab,这时有【1】,【3】,【1,3】,那么假设是ababa的话就是可以从前边这几个中,再加上新来的a的影响的,多出来的就是:【4】【1,4】【3,4】【1,3,4】,发现就是之前的再多一个。

  • 代码:

  • #include<bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    const int mod=1000000000+7;
    LL sum=0;
    LL tol=0;
    LL lala=0;
    int main()
    {
        string s;
        while(cin>>s){
            sum=0;
            tol=0;
            int len=s.size();
            for(int i=0;i<len;i++){
                if(s[i]=='b'){
                    lala=tol;
                }
                if(s[i]=='a'){
                    tol+=lala+1;
                    tol=tol%mod;
                }
            }
            cout<<tol<<endl;
        }
    }
    

猜你喜欢

转载自blog.csdn.net/xianpingping/article/details/84963516