【PAT甲级】1093 Count PAT's (25 分)

题意:

输入一行由大写字母'P','A','T',组成的字符串,输出一共有多少个三元组"PAT"(相对顺序为PAT即可),答案对1e9+7取模。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 const long long mod = 1e9+7;
 5 string s;
 6 long long nump[100007],numpa[100007];
 7 long long sum[100007];
 8 int main(){
 9     ios::sync_with_stdio(false);
10     cin.tie(NULL);
11     cout.tie(NULL);
12     cin>>s;
13     int n=s.size();
14     for(int i=0;i<n;++i){
15         nump[i]=nump[i-1];
16         if(s[i]=='P'){
17             ++nump[i];
18             nump[i]%=mod;
19         }
20         numpa[i]=numpa[i-1];
21         if(s[i]=='A'){
22             numpa[i]+=nump[i];
23             numpa[i]%=mod;
24         }
25         sum[i]=sum[i-1];
26         if(s[i]=='T'){
27             sum[i]+=numpa[i];
28             sum[i]%=mod;
29         }
30     }
31     cout<<sum[n-1];
32     return 0;
33 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11908490.html