深圳幻海软件技术有限公司 欢迎您!

3563: 有几个ACM

2023-03-25

3563:有几个ACM题目描述有一群人非常喜欢ACM比赛,只要是跟ACM相关的东西他们都非常在意。有一天,他们在YTU的校园里看到了一个仅由”A”、”C”、”M”这三个字符组成的横幅。一时兴起,他们想要知道这个横幅里出现了几次”ACM”,你也是其中的一员,请编写一个程序解决这个问题。输入输入只有一行

3563: 有几个ACM
题目描述
有一群人非常喜欢ACM比赛,只要是跟ACM相关的东西他们都非常在意。有一天,他们在YTU的校园里看到了一个仅由”A”、”C”、”M”这三个字符组成的横幅。一时兴起,他们想要知道这个横幅里出现了几次”ACM”,你也是其中的一员,请编写一个程序解决这个问题。

输入
输入只有一行,包含一个字符串s(length(s)<=105),只含有A、C、M这三种字母。

输出
在一行中输出给定的字符串中含有多少个ACM。最终的结果可能比较大,请对结果用1000000007取余。

样例输入
copy
CAACAM

样例输出
2
提示

样例解释:

字符串CAACAM中包含了两个ACM,其中

第一个ACM是字符的第2位(A),第4位©,第6位(M);

第二个ACM是字符的第3位(A),第4位©,第6位(M)。
思路:

#include<bits/stdc++.h>

using namespace std;

int main()
{
    string s;
    getline(cin,s);
    int a=0,c=0,ans=0;
    for(int i=0;i<s.length();i++)
    {
        if(s[i]=='A')
            a++;
        else if(s[i]=='C')
            c+=a;
        else if(s[i]=='M')
            ans=(ans+c)%1000000007;
    }
    cout<<ans%1000000007;
    return 0;
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22