题目
链接:PAT (Basic Level) Practice 1040 有几个PAT
字符串
APPAPT
中包含了两个单词PAT
,其中第一个PAT
是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二个PAT
是第 3 位(P
),第 4 位(A
),第 6 位(T
)。
现给定字符串,问一共可以形成多少个PAT
?输入格式:
输入只有一行,包含一个字符串,长度不超过
,只包含
P
、A
、T
三种字母。输出格式:
在一行中输出给定字符串中包含多少个
PAT
。由于结果可能比较大,只输出对1000000007 取余数的结果。输入样例:
APPAPT
输出样例:
2
思路
PAT的个数就是每个字母A左端P的个数与右边T的个数的乘积的和。
代码
#include<stdio.h>
#include<string.h>
int main()
{
char c[100001];
long long sum = 0;
int countp = 0;
int countt = 0;
scanf("%s", c);
//得到T的个数
for(int i = 0; i < strlen(c); i++){
if(c[i] == 'T'){
countt++;
}
}
for(int i = 0; i < strlen(c); i++){
if(c[i] == 'P'){ //左端字母P的个数
countp++;
}
else if(c[i] == 'T'){ //右端字母T的个数
countt--;
}
else if(c[i] == 'A'){
sum += countp * countt;
}
}
printf("%lld", sum % 1000000007);
return 0;
}
---END---
其他相关题目
PAT-B 1036 跟奥巴马一起编程(C语言)
PAT-B 1037 在霍格沃茨找零钱(C语言)
PAT-B 1038 统计同成绩学生(C语言)
PAT-B 1039 到底买不买(C语言)