1040 有几个PAT (25分)
字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T);第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T)。
现给定字符串,问一共可以形成多少个 PAT?
输入格式:
输入只有一行,包含一个字符串,长度不超过105,只包含 P、A、T 三种字母。
输出格式:
在一行中输出给定字符串中包含多少个 PAT。由于结果可能比较大,只输出对 1000000007 取余数的结果。
输入样例:
APPAPT
输出样例:
2
/*
* 思路:A能构成的PAT数量 = A之前P的数量 * A之后T的数量
*/
#include <stdio.h>
int main(){
char s[100001];
scanf("%s",s);
int p=0,a=0,t=0, num=0;
for (int i = 0; s[i]!='\0'; ++i) {
if (s[i]=='T') t++;
}
for (int i = 0; s[i]!='\0'; ++i) {
if (s[i]=='P') p++;
else if (s[i]=='A')
num = (num+(long long )(p*t)) % 1000000007;
else{
t--;
if (t==0)
break;
}
}
printf("%d", num);
return 0;
}