#include<iostream>
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;
int main()
{
char c[100010];
int p[100010],t[100010];
cin>>c;
int len=strlen(c);
for (int i=0;i<len;i++)
{
if (c[i]=='P')
{ if (i==0){p[i]=1;}
else{p[i]=p[i-1]+1;}
}
else
{
if (i==0){p[i]=0;}
else{p[i]=p[i-1];}
}
}
for(int i=len-1;i>0;i--)
{
if (c[i]=='T')
{ if (i==(len-1)){t[i]=1;}
else{t[i]=t[i+1]+1;}
}
else
{
if (i==(len-1)){t[i]=0;}
else{t[i]=t[i+1];}
}
}
int ans=0;
for(int i=0;i<len;i++)
{
if(c[i]=='A')
{
ans+=p[i]*t[i];
ans=ans%1000000007;
}
}
cout<<ans;
system("pause");
return 0;
#include<algorithm>
#include<string>
#include<string.h>
using namespace std;
int main()
{
char c[100010];
int p[100010],t[100010];
cin>>c;
int len=strlen(c);
for (int i=0;i<len;i++)
{
if (c[i]=='P')
{ if (i==0){p[i]=1;}
else{p[i]=p[i-1]+1;}
}
else
{
if (i==0){p[i]=0;}
else{p[i]=p[i-1];}
}
}
for(int i=len-1;i>0;i--)
{
if (c[i]=='T')
{ if (i==(len-1)){t[i]=1;}
else{t[i]=t[i+1]+1;}
}
else
{
if (i==(len-1)){t[i]=0;}
else{t[i]=t[i+1];}
}
}
int ans=0;
for(int i=0;i<len;i++)
{
if(c[i]=='A')
{
ans+=p[i]*t[i];
ans=ans%1000000007;
}
}
cout<<ans;
system("pause");
return 0;
}
注意点
1.注意取模
2.直接模拟会超时