有多少个PAT

原创 2015年07月06日 18:06:11
#include<iostream>
#include<string>
using namespace std;
const int maxn = 100100;
int p[maxn],t[maxn];//p[i]表示第i位前(包括i)有多少P,t[i]表示i位之后有多少T
int main(){
string s;
cin>>s;
long long  ans=0;
int len=s.length();
for(int i=0;i<len;i++){
if(s[i] == 'P'){
if(i==0) 
p[i]++;
else
p[i] = p[i-1]+1;
}else{
if(i>0)
p[i] = p[i-1];
else
p[i]=0;
}




}


for(int i=len-1;i>=0;i--){
if(s[i] == 'T'){
if(i==len-1)
t[i]++;
else
t[i]=t[i+1]+1;
}else{
if(i==len-1)
t[i]=0;
else
t[i] = t[i+1];
}
}
for(int i=0;i<len;i++){
if(s[i] == 'A'){
ans+=p[i]*t[i];
}
}




cout<<ans%1000000007;
system("pause");
return 0;
}

相关文章推荐

从0到n,共包含多少个2?

  • 2014年10月15日 10:25
  • 2KB
  • 下载

获得要素有多少个节点

  • 2017年11月15日 23:14
  • 556B
  • 下载

JS 获取两个时间相差多少个小时

获取两个时间之间相差多少个小时. 思路: 将两个时间转换成毫秒值相减,可以得到两个时间相差的毫秒值 通过毫秒值,将之转换成小时(除以1000/60/60) fun...

判断输入整数含有多少个0

  • 2013年12月24日 14:42
  • 22KB
  • 下载

1*2*3*……*100 求结果末尾有多少个零 网上的答案到底对不对

题目:1*2*3*……*100 求结果末尾有多少个零   分析:一般类似的题目都会蕴含某种规律或简便方法的,阶乘末尾一个零表示一个进位,则相当于乘以10而10 是由2*5所得,在1~100当...

POJ 1737 统计有n个顶点的连通图有多少个 (带标号)

设f(n)为所求答案 g(n)为n个顶点的非联通图 则f(n) + g(n) = h(n) = 2^(n * (n - 1) / 2) 其中h(n)是n个顶点的联图的个数 这样计算 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:有多少个PAT
举报原因:
原因补充:

(最多只允许输入30个字)