标签:
提交代码
#include<iostream>
#include<cstring>
#include<string>
#include<cmath>
#include<map>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
const int maxn=200000;
const int inf=2100000000;
long long mod=1000000007;
char s[maxn];
int a[maxn];
int b[maxn];
int main()
{
int n,m,i,k,t,j;
scanf("%s",s);
n=strlen(s);
long long ans=0;
int num=0;
int cnt=0,cnt2=0;
//统计A前面的P的个数
for(i=0;i<n;i++)
{
if(s[i]=='P')num++;
else if(s[i]=='A')
{
a[cnt++]=num;
}
}
cnt2=cnt-1;num=0;//统计A后面的T的个数
for(i=n-1;i>=0;i--)
{
if(s[i]=='T')num++;
else if(s[i]=='A')
{
b[cnt2--]=num;
}
}
for(i=0;i<cnt;i++)//计算总和
{
ans+=a[i]*b[i]%mod;
ans%=mod;
}
printf("%lld\n",ans%mod);
return 0;
}
1093. Count PAT's (25)想法题吧,算是排列组合吧
标签:
原文地址:http://blog.csdn.net/u013167299/article/details/44261891