有几个PAT (PATB-1040)
题面
字符串
APPAPT
中包含了两个单词PAT
,其中第一个PAT
是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二个PAT
是第 3 位(P
),第 4 位(A
),第 6 位(T
)。现给定字符串,问一共可以形成多少个
PAT
?
输入
输入只有一行,包含一个字符串,长度不超过105,只包含
P
、A
、T
三种字母。
输出
在一行中输出给定字符串中包含多少个
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}