(复习)1040 有几个PAT (25分)
程序员文章站
2022-06-08 08:53:33
...
本题参考了大神的思路,是真的好
/*思路;每次扫描到A,用这个A组成的PAT刚好是A前面的P数量*A后面T的数量。
so,遍历一遍字符串,存下每个位置前面A的数量。
然后从后遍历计数T的数量,扫描到A 就总数加上 A前面的P数量*A后面T的数即可
然后每次sum要相加都两次取模。*/
#include <stdio.h>
#include <string.h>
int main(){
char a[100001];
gets(a);
int len = strlen(a);
int i,countt=0,countp=0,sum=0;
for(i=len-1;i>=0;i--){
if(a[i]=='T'){
countt++;
}
}
for(i=0;i<len;i++){
if(a[i]=='P') countp++;
if(a[i]=='T') countt--;
if(a[i]=='A') sum=(sum+(countt*countp)%1000000007)%1000000007;
}
printf("%d",sum);
}
上一篇: Oracle数据库的备份方法
下一篇: 端午浙江哪里好玩 浙江端午旅游好去处