[PAT乙级]1040. 有几个PAT(25)

来源:互联网 发布:单片机时序图 编辑:程序博客网 时间:2024/04/30 04:01

1040. 有几个PAT(25)

原题链接

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。

现给定字符串,问一共可以形成多少个PAT?

输入格式:

输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

输出格式:

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。

输入样例:APPAPT输出样例:2

思路:

  • 根据题意 ,要想知道有几个PAT,遍历所有的A,每个A所构成的PAT的数量 = 该A前P的数量 * 该A后T的数量

代码:

#include <iostream>#include <string>using namespace std;int main(){    string s;    cin >> s;    int p=0,a=0,t=0;    int res=0;    for(int i=0; i<s.size(); i++){        if(s[i] == 'T')            t++;    }    for(int i=0; i<s.size(); i++){        if(s[i] == 'P')            p++;        if(s[i] == 'T')            t--;        if(s[i] == 'A')            res = (res + (p*t)%1000000007)%1000000007;    }    cout << res << endl;    return 0;}

思路来源