其他分享
首页 > 其他分享> > PAT (Basic Level) Practice 1040 有几个PAT (25 分)

PAT (Basic Level) Practice 1040 有几个PAT (25 分)

作者:互联网

题目:1040 有几个PAT (25 分)

来源:PAT (Basic Level) Practice

传送门 1040 有几个PAT

题面

image

题意:给定字符串,找到其中可以形成几个"PAT"非连续子串

思路:

先扫一遍,得出字符"T"的个数,然后再扫一遍,碰到"P"就把统计p的变量加一,遇到"T"就把统计T的变量减一,遇到"A"就把此时P和T的个数相乘送入答案,因为这就是此时这个A位置上所能形成的PAT的个数。记得对答案取模。

Code

点击查看代码
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const ll mode =1e9+7;
string s;
ll cp =0,ct=0,ca=0,ans=0;
int main(){
	cin>>s;
	for(ll i=0;i<s.size();i++)
		if(s[i] == 'T')
			ct++;
	for(ll i = 0;i<s.size();i++){
		if(s[i] == 'T')ct--;
		else if(s[i] == 'P')cp++;
		else if(s[i] == 'A'){ans+=ct*cp;ans%mode;}
	}
	cout<<ans%mode<<"\n";
	return 0;
} 

标签:25,1040,PAT,ll,个数,Basic
来源: https://www.cnblogs.com/w0x59-h/p/15858329.html