1040 有几个PAT (25分)
程序员文章站
2022-06-08 08:09:20
...
#include<stdio.h>
#include<string>
#include<iostream>
using namespace std;
int main(){
string str;
getline(cin,str);
int len=str.size();
int leftnump[len]={0},rightnumt[len]={0};
int ans=0;
if(str[0]=='P')leftnump[0]=1;
for(int i=1;i<len;i++){
if(str[i]=='P')leftnump[i]=leftnump[i-1]+1;
else leftnump[i]=leftnump[i-1];
}
if(str[len-1]=='T')rightnumt[len-1]=1;
for(int i=len-2;i>=0;i--){
if(str[i]=='T')rightnumt[i]=rightnumt[i+1]+1;
else rightnumt[i]=rightnumt[i+1];
if(str[i]=='A') ans=(ans+rightnumt[i]*leftnump[i])%1000000007;
}
printf("%d\n",ans);
return 0;
}
第一次,参考算法笔记完成,30min
上一篇: 众数问题