#include <bits/stdc++.h>
using namespace std;
#define kMOD 1000000007
int main()
{
#ifdef LOCAL
freopen("input.txt", "r", stdin);
#endif
string s;
cin >> s;
// 在位置i之前(包括位置i)有多少个P,位置i之后(包括位置i)有多少个T
vector<int> pre_P(s.size());
vector<int> post_T(s.size());
int ctr = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == 'P')
pre_P[i] = ++ctr;
else
pre_P[i] = ctr;
}
ctr = 0;
for (int i = s.size() - 1; i >= 0; --i) {
if (s[i] == 'T')
post_T[i] = ++ctr;
else
post_T[i] = ctr;
}
// 计数
int ans = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == 'A')
ans = (ans + pre_P[i] * post_T[i] % kMOD) % kMOD;
}
cout << ans;
}
PAT 甲级 1093 Count PAT‘s
最新推荐文章于 2022-09-03 18:07:05 发布