1040. 有几个PAT(25)

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。

现给定字符串,问一共可以形成多少个PAT?

输入格式:

输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

输出格式:

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。

输入样例:

APPAPT

输出样例:

2
 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include<string.h>
 4 
 5 char str[100005];
 6 int main()
 7 {
 8     int numT=0,numP=0,numPAT=0; //T的个数,P的个数,PAT的个数
 9     int i;
10     gets(str);
11     for( i=0; str[i]!='\0'; i++)
12     {
13         if( str[i]=='T')
14             numT++;  //先循环一遍找到T的个数
15     }
16     for( i=0; str[i]!='\0'; i++)
17     {
18         if( str[i]=='T')
19             numT--;
20         else if(str[i]=='P')
21             numP++;
22         else //遇到一个A,它所组成的PAT个数为它前面的P的个数乘它后面的T的个数
23             numPAT =( numPAT+ numP*numT%1000000007)%1000000007; 
24     }
25     printf("%d",numPAT);
26     return 0;
27 }

 

posted @ 2018-03-05 09:38  yuxiaoba  阅读(112)  评论(0编辑  收藏  举报