
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int maxn=1e5+10;
const int mod=1000000007;
int l[maxn];
int r[maxn];
int main()
{
string s;
cin>>s;
int cnt=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='P')
{
// printf("1111111\n");
cnt++;
l[i]=cnt;
}
else
{
l[i]=cnt;
}
}
cnt=0;
for(int i=s.size()-1;i>=0;i--)
{
if(s[i]=='T')
{
cnt++;
r[i]=cnt;
}
else r[i]=cnt;
}
int ss=s.size()-1;
int ans=0;
for(int i=0;i<s.size();i++)
{
if(s[i]=='A')
{
ans=(ans+l[i]*r[i])%mod;
// printf("%d---%d\n",l[i],r[i]);
}
}
printf("%d\n",ans);
}
这段代码读取一个字符串,计算其中'P'字符到'A'字符的距离,并使用模运算求和。程序从两端向中间遍历,分别记录'P'和'T'的位置,最后计算所有'A'对应的距离乘积之和。
254

被折叠的 条评论
为什么被折叠?



