1093 Count PAT's-PAT甲级真题
分析:计算每个A左边的P数量和右边的T数量,相乘累加得到答案。先遍历一遍字符串,计算每个A右边的T数量,再遍历一遍计算左边P的数量;并相乘累加。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
cin>>s;
int t[100000];
long long sum=0,ans=0;
for(int i=s.size()-1;i>0;i--){
if(s[i]=='T') sum++;
if(s[i]=='A') t[i]=sum;
}
sum=0;
for(int i=0;i<s.size();i++){
if(s[i]=='P') sum++;
if(s[i]=='A') ans+=sum*t[i];
}
ans=ans%1000000007;
cout<<ans;
return 0;
}