题意:
输入一行由大写字母'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 }