PAT 乙级 1040 有几个PAT v1.0
1. 题目简述及在线测试位置
1.1 计算指定字符串的个数
1.2 在线测试位置:1040 有几个PAT
2. 基本思路
2.1 核心就是找规律,找到规律后,编码相对来说就轻松很多了
2.2 先找指定字符串 PAT 中的PA个数,每个A前有多少个P,将这些数字加起来就是PA总数, 同理,每个T前有多少个PA,将这些数字加起来就是PAT的总数了
3. 完整AC代码
#include <iostream>
using namespace std;
#define MAX 1000000007
//PA总数是 每个A之前P的数量 之和
//PAT数量是 每个T之前PA数量 之和
int main()
{
string Str;
//P数 PA数 PAT数
int PNumber=0, PANumber=0, PATNumber=0;
cin >> Str;
for (int i = 0; i < Str.length(); i++)
{
if (Str[i] == 'P')
PNumber++;
if (Str[i] == 'A')
PANumber = (PNumber + PANumber) % MAX;
if (Str[i] == 'T')
PATNumber = (PATNumber + PANumber) % MAX;
}
cout << PATNumber;
return 0;
}