注意取余的位置
#pragma warning(disable :4996)
#include<iostream>
#include<cstdlib>
#include<cstdio>
#include <stdio.h>
#include <string.h>
#include<string>
const int MOD = 1000000007;
const int MAXN = 100010;
using namespace std;
int main()
{
string s;
cin >> s;
int leftnumP[MAXN] = { 0 };
for (int i = 0; i < s.length(); i++)
{
if (i != 0)
{
leftnumP[i] = leftnumP[i - 1];
}
if (s[i] == 'P')
{
leftnumP[i]++;
}
}
int rightnumT = 0 , ans = 0;
for (int i = s.length() - 1; i >= 0; i--)
{
if (s[i] == 'T')
{
rightnumT++;
}
else if(s[i] == 'A')
{
ans =(ans +rightnumT* leftnumP[i])%MOD;
}
}
cout << ans;
return 0;
}