PAT --- 1040.有几个PAT (25 分)
程序员文章站
2022-05-14 18:23:19
...
1040 有几个PAT (25 分)
字符串 APPAPT
中包含了两个单词 PAT
,其中第一个 PAT
是第 2 位(P
),第 4 位(A
),第 6 位(T
);第二个 PAT
是第 3 位(P
),第 4 位(A
),第 6 位(T
)。
现给定字符串,问一共可以形成多少个 PAT
?
输入格式:
输入只有一行,包含一个字符串,长度不超过10510^5105,只包含 P
、A
、T
三种字母。
输出格式:
在一行中输出给定字符串中包含多少个 PAT
。由于结果可能比较大,只输出对 1000000007 取余数的结果。
输入样例:
APPAPT
输出样例:
2
思路
此题比较简单,先找到字母A
的位置,判断A
前P
的个数nP和A
后T
的个数nT。
- 首先循环得到
T
的个数nT; - 遍历字符串,发现
A
时,将nP*nT;
输出时,注意取模,这点要注意,一开始没注意,两个测试点不给过,后来没加一次取一次模就OK了。
代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string s;
int nP = 0, result = 0;
cin >> s;
int nT = count(s.begin(), s.end(), 'T');
for (int i = 0; i < s.length(); i ++){
if (s[i] == 'P') nP++;
if (s[i] == 'T') nT--;
if (s[i] == 'A')
result = (result + (nP * nT) % 1000000007) % 1000000007;
}
cout << result;
}
下一篇: 让你赚黑心钱
推荐阅读
-
【PAT】B1085 PAT单位排行(25 分)(c++实现)
-
PAT 甲级真题 1006 Sign In and Sign Out (25分) python实现
-
PAT (Advanced Level) 1012 The Best Rank (25 分)
-
PAT甲1122 Hamiltonian Cycle(25 分)
-
[Python](PAT)1122 Hamiltonian Cycle(25 分)
-
PAT (Advanced Level) Practice - 1122 Hamiltonian Cycle(25 分)
-
PAT (Advanced Level) 1009 Product of Polynomials (25 分)
-
【PAT甲级】【1002】 A+B for Polynomials (25分)
-
PAT (Advanced Level) 1006 Sign In and Sign Out (25 分)
-
PAT(A)1025 PAT Ranking (25分)