PAT 甲级 1093

 APT APT~

只用一次倒序遍历即可,ts记录'T'的个数,每出现一个'A'就能多ts个"AT"组合,每出现一个'P'就能多ats个'PAT'组合。

发一下只是因为很喜欢《APT》

#include
using namespace std;
long long int MOD=1000000007;
int main(){
    long long int ts=0,las=0,ans=0,ats=0;
    //ats为可以形成AT的个数,每个P能形成ats个PAT
    string l;
    cin>>l;
    for(auto i=l.rbegin();i!=l.rend();i++){
        if (*i=='T')ts++;
        if (*i=='A')ats+=ts;
        if (*i=='P'){
            ans=(ans+ats)%MOD;
        }
    }
    cout<

你可能感兴趣的:(算法,c++,数据结构,pat考试)