您的位置:首页 > 其它

PAT乙级 1040. 有几个PAT(25)--数学问题

2017-07-29 16:53 288 查看
题目链接:https://www.patest.cn/contests/pat-b-practise/1040


1040. 有几个PAT(25)

时间限制

120 ms

内存限制

65536 kB

代码长度限制

8000 B

判题程序

Standard

作者

CAO, Peng

字符串APPAPT中包含了两个单词“PAT”,其中第一个PAT是第2位(P),第4位(A),第6位(T);第二个PAT是第3位(P),第4位(A),第6位(T)。

现给定字符串,问一共可以形成多少个PAT?

输入格式:

输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

输出格式:

在一行中输出给定字符串中包含多少个PAT。由于结果可能比较大,只输出对1000000007取余数的结果。
输入样例:
APPAPT

输出样例:
2


具体数学思想请看代码。

这题有意思,要掌握!

#include<iostream>
#include<cstring>
using namespace std;
const int maxn=100001;
char s[maxn];
int main(){
cin>>s;
int len=strlen(s);
int P=0,PA=0,PAT=0,M=1000000007;
for(int i=0;i<len;i++){ //重点
if(s[i]=='P') P++;
if(s[i]=='A') PA=(PA+P)%M;
if(s[i]=='T') PAT=(PAT+PA)%M;
}
cout<<PAT;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: