有几个PAT (PATB-1040)

题面

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

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

输入

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

输出

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

样例输入

1APPAPT

样例输出

12

提示

思路

代码

 1const int mxn = 1e5 + 5;
 2char s[mxn];
 3
 4int main()
 5{
 6    scanf("%s", s);
 7    int sl = strlen(s);
 8
 9    LL p=0, a=0, t=0, mod=1000000007;
10    for(int i=0; i<sl; i++)
11    {
12        if(s[i]=='P')
13            p++;
14        else if(s[i]=='A')
15            a += p;
16        else if(s[i]=='T')
17            t += a;
18    }
19    printf("%d\n", t%mod);
20
21    return 0;
22}