字符串?APPAPT
?中包含了兩個單詞?PAT
,其中第一個?PAT
?是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二個?PAT
?是第 3 位(P
),第 4 位(A
),第 6 位(T
)。
現給定字符串,問一共可以形成多少個?PAT
?
輸入格式:
輸入只有一行,包含一個字符串,長度不超過1,只包含?P
、A
、T
?三種字母。
輸出格式:
在一行中輸出給定字符串中包含多少個?PAT
。由于結果可能比較大,只輸出對 1000000007 取余數的結果。
輸入樣例:
APPAPT
輸出樣例:
2
#include<cstdio> #include<cstring> const int maxn = 100010; const int MOD = 1000000007; char str[maxn]; int leftNumP[maxn] = {0};int main(){scanf("%s",str);int len = strlen(str);for(int i = 0; i < len; i++){if(i > 0){leftNumP[i] = leftNumP[i - 1];}if(str[i] == 'P'){leftNumP[i]++;}}int ans = 0,rightNumT = 0;for(int i = len; i >= 0; i--){if(str[i] == 'T') rightNumT++;if(str[i] == 'A') ans = (ans + rightNumT * leftNumP[i]) % MOD;}printf("%d",ans);return 0; }
?