题目描述

The string APPAPT contains two PAT’s as substrings. The first one is formed by the 2nd, the 4th, and the 6th characters, and the second one is formed by the 3rd, the 4th, and the 6th characters.

Now given any string, you are supposed to tell the number of PAT’s contained in the string.

翻译:字符串“APPAPT”中包含了两个子串“PAT”。第一个子串是由第二个字符、第四个字符、第六个字符构成,第二个子串是由第三个字符、第四个字符、第六个字符构成。
现在给你任意一个字符串,你需要说出其中包含了多少个“PAT”子串。

INPUT FORMAT

Each input file contains one test case. For each case, there is only one line giving a string of no more than 10^​5。characters containing only P, A, or T.

翻译:每个输入文件包括一组测试数据。对于每组测试数据,只有一行给定的不超过10^5个字符的字符串。仅仅包含‘P’,‘A’,‘T’字符。

OUTPUT FORMAT

For each test case, print in one line the number of PAT’s contained in the string. Since the result may be a huge number, you only have to output the result moded by 1000000007.

翻译:对于每组测试数据,输出一行该字符串包含的”PAT“子串的数量。由于结果可能很大,所以你只需输出模除1000000007之后的结果。


Sample Input:

APPAPT


Sample Output:

2


解题思路:

模拟题,用变量P记录到当前位置为止共出现了多少个‘P’,用变量tmpCount记录到当前位置共出现了多少次PA组合,状态转移式为tmpCount[i+1]=tmpCount[i]+P,由于我们只需要保存最后的tmpCount,所以一个变量即可。注意模除,具体实现见代码。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<vector>
#include<algorithm>
#define INF 99999999
#define bug puts("Hello\n")
#define M 1000000007
using namespace std;
char s[100010];
int ans=0;
int tmpCount=0;
int P=0;
int main(){scanf("%s",s);int length=strlen(s);for(int i=0;i<length;i++){if(s[i]=='P')P++;if(s[i]=='A')tmpCount=tmpCount%M+P;if(s[i]=='T')ans=ans%M+tmpCount%M;       }printf("%d\n",ans%M);return 0;
}

【PAT】1093. Count PAT's (25)【模拟题】相关推荐

  1. 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)

    1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...

  2. PAT甲级1093 Count PAT‘s :[C++题解]DP、状态机模型dp

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析:统计子串"PAT"的数量. 状态机模型:本题需要的是PAT,需要选3个字母,对应三条边,需要4个状态. 下面以样例 ...

  3. 1093 Count PAT‘s (25 分)【难度: 一般 / 知识点: 前缀和 组合数】

    https://pintia.cn/problem-sets/994805342720868352/problems/994805373582557184 PAT乙级的原题,这里不在赘述,就是前缀和, ...

  4. 【PAT甲级 排列组合】1093 Count PAT's (25 分) C++ 全部AC

    题解 对于字符串中每个A而言,若其前面有m个P,后面有n个T,可以得到对于当前的A,能够组成m*n种情况的PAT. 因此找到A的位置,用A左边P的个数*A右边T的个数即可. 题解1:我的解法 C++ ...

  5. 1093 Count PAT‘s

    这题出现在"活用递推"专题下面,所谓递推就是这一步的结果和上一步的结果有直接联系.对于本题来说,从左到右,记到当前位置,一共出现的P的个数,如果当前位置是P,则个数就是上一位的加1 ...

  6. PAT乙级 1110 区块反转 (25 分) C++

    1110 区块反转 (25 分) 给定一个单链表 L,我们将每 K 个结点看成一个区块(链表最后若不足 K 个结点,也看成一个区块),请编写程序将 L 中所有区块的链接反转.例如:给定 L 为 1→2 ...

  7. PAT 基础编程题目集(编程题1-38)题解

    PAT 基础编程题目集(编程题1-38)题解 ----------------------------------------------------------------------------- ...

  8. 【PAT - 甲级1003】Emergency (25分)(Dijkstra,最短路条数,双权值最短路)

    题干: As an emergency rescue team leader of a city, you are given a special map of your country. The m ...

  9. PAT 1093 Python

    PAT 1093 Python 1093 字符串A+B (20 分) 给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输入 ...

最新文章

  1. 封装了一下我佛山人4.0 (支持vs2005)asp.net 页面验证
  2. Facebook的加密货币即将到来会对整个加密货币领域意味着什么
  3. pycharm 运行celery_在 Pycharm 安装使用black的方法详解
  4. 3.1.8 具有快表的地址变换机构
  5. 网站打开速度多少毫秒为正常_个人做shopify-怎么测试和优化网站打开速度
  6. php归档函数(按时间)实现
  7. Azure与Scott Guthrie:Azure安全中心和基于角色的访问控制
  8. Matlab绘图--包含各种标示符的输入方法
  9. lisp 中望cad 选项卡_这些高效插件,学CAD的基本用过两种以上
  10. 列表页时间日期标签靠显示html,帝国CMS列表页面list.var分别调用年月日,显示个性时间日期...
  11. 域控 只能访问特定网址_开发人员需要了解的特定于域的语言
  12. idea server日志乱码_windows下,Kiwi_Syslog日志服务器的搭建
  13. 交比不变性 matlab,高等几何答案
  14. webSphere报错:Error 500: javax.servlet.ServletException: SRVE0207E: Uncaught initialization
  15. phabricator客户端使用(windows)
  16. MIUI12国际版、欧版、波兰版、国内开发板刷机排雷现场
  17. 西门子PLC S7-1200程序实例,博图版本V15,仅供电气编程者学习借鉴
  18. html向下三角箭头,CSS 实现三角形尖角箭头的实例
  19. 切身体验苹果Reminders的贴心设计
  20. 能量原理与变分法笔记06:高阶导数的变分问题(包含函数的高阶导数)

热门文章

  1. HUAWEI(20)——灵活QinQ
  2. 天球坐标系的相关基础知识
  3. 一些应该有所了解的常识
  4. 猫咪也会长黑头?猫咪黑下巴怎么办?
  5. 婉约的豪情;豪放的柔情
  6. office2019中word,excel等打开提示正在加载加载项的解决办法
  7. 关于后端返回base64的图片编码数据转化为真正的图片,前端进行展示图片预览
  8. openGauss数据库的使用
  9. python 使用 with open() as 读写文件
  10. 计算机u盘病毒清除方式,如何操作才能将U盘中的病毒彻底?两种方法即可清除...