【题解】PATB-1040 有几个PAT

有几个PAT (PATB-1040)

题面

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

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

输入

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

输出

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

样例输入

1
APPAPT

样例输出

1
2

提示

思路

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
const int mxn = 1e5 + 5;
char s[mxn];

int main()
{
scanf("%s", s);
int sl = strlen(s);

LL p=0, a=0, t=0, mod=1000000007;
for(int i=0; i<sl; i++)
{
if(s[i]=='P')
p++;
else if(s[i]=='A')
a += p;
else if(s[i]=='T')
t += a;
}
printf("%d\n", t%mod);

return 0;
}