题目

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

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

输入格式:

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

输出格式:

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

输入样例:

APPAPT

输出样例:

2

分析

  • 先看一个比较复杂的字符串,APPATTAAPATTAPAT,共有2 * 5 + 2 * 3 + 2 * 3 + 3 * 3 + 3 * 1 + 4 * 1 = 38
  • 可以发现,每一个’A’构成的"PAT"是它前面的P的数目乘以它后面T的数目。总数把每个’A’构成的"PAT"数目加起来就可以了。
  • 多次遍历暴力求肯定不行,因为限时150ms,所以一次遍历就要解决。
  • 继续观察,越往后,P越大,T越小。所以,可以先遍历一次把T的数目求出来。然后,每当遍历到P就自增,遍历到T就自减,遍历到A就把当前的P的数目乘以T的数目并累加。
  • 为防止溢出,结果要用long long存。

AC代码

#include<iostream>
using namespace std;
int main()
{string s;int i,p=0,t=0;long long rst=0;cin>>s;int len=s.length();for(i=0; i<len; i++){if(s[i]=='T')t++;}for(i=0; i<len; i++){if(s[i]=='P')p++;else if(s[i]=='T')t--;elserst=rst+(p*t);}rst=rst%1000000007;cout<<rst;return 0;
}

更多题解
pat 乙级(Basic Level) 题解汇总(持续更新)(C++)

1040 有几个PAT(PAT乙级 C++)相关推荐

  1. 2021年 PAT(乙级)

    2021年 PAT(乙级) 7-1 好数 (15 分) 题目描述 代码 利用常规方法(通过式子判断)模拟 利用哈希表存储所有数的源头 解题思路 7-2 数以类聚 (20 分) 题目描述 代码 思路 7 ...

  2. 【PAT】乙级题目解答合集(c++)

    [PAT]乙级题目解答合集(c++) 本篇文章为对PAT乙级1001-1095的题目解答的汇总 1001 害死人不偿命的(3n+1)猜想 (15 分) 1002 写出这个数 (20 分) 1003 我 ...

  3. PAT(乙级)2022年夏季考试

    PAT(乙级)2022年夏季考试题解 7-1 又是一道 A+B 15分 原题 算法标签 模拟 哈希 代码 #include<bits/stdc++.h> #define int long ...

  4. PAT考试乙级1010之一元多项式求导

    PAT考试乙级1010之一元多项式求导 题目: 设计函数求一元多项式的导数.(注:x​n(n为整数)的一阶导数为nx​n−1.) 输入格式: 以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 ...

  5. 【PAT】乙级 1040 有几个PAT (25 分) c++

    1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...

  6. PAT乙级1040:有几个PAT (25)

    题目 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T). 现给 ...

  7. PAT(pat)乙级合级(全)C语言

    pat乙级全部95道题,C语言 第一遍刷都没用注释,后面刷会慢慢加上去的.感觉有用的可以收藏点个赞.感谢0.0,点击就可以跳转了. 1001 1002 1003 1004 1005 1006 1007 ...

  8. PAT(乙级)2020年春季考试真题解析

    七夕了呀,那就刷题吧~~~ 本次试题依旧使用 C++ 进行求解~ 由于疫情原因,本次PAT由原来的线下举办改为线上考试~ 9月份还有一场,想参加的小伙伴不要错过呀~ 由于本人过菜,这次七夕教超打折依旧 ...

  9. PAT(乙级)1090.危险品装箱(25)

    PAT 1090.危险品装箱(25) 集装箱运输货物时,我们必须特别小心,不能把不相容的货物装在一只箱子里.比如氧化剂绝对不能跟易燃液体同箱,否则很容易造成爆炸. 本题给定一张不相容物品的清单,需要你 ...

  10. PAT(乙级)2019年冬季考试【答案+题解】

    7-1 2019数列 (15分) 7-2 老鼠爱大米 (20分) 7-3 String复读机 (20分) 7-4 擅长C (20分) 7-5 区块反转 (25分) 7-1 2019数列 (15分) 把 ...

最新文章

  1. 推荐7款超良心的windows软件,每一个都是精品!
  2. linux diff(differential) 命令
  3. oracle 序列的使用
  4. springboot集成kaptcha 2.3.2
  5. python 入门学习
  6. MVC后台数据赋值给前端JS对象
  7. ctfmon是什么启动项_启动项里ctfmon是什么意思,干什么用的??
  8. Diameter协议学习笔记一(协议介绍)
  9. 28本大数据/数据分析/数据挖掘电子书合集免费下载!
  10. 使用 LaTeX 写数学公式
  11. 【实战】Django从零搭建个人网站
  12. 初级第八旬03— 初级课程第八旬试题
  13. 基于springboot的学生管理系统
  14. PHP7 安装 Swoole 教程
  15. 51单片机与HC-05蓝牙模块连接使用
  16. libIEC61850学习记录
  17. ②读后感之《如何阅读一本书》 莫提默.J.艾德勒【美】
  18. 选购wordpress主机创建自己的博客
  19. FFmpeg从入门到出家(FLV文件结构解析)
  20. element ui - el-select 添加可输入功能

热门文章

  1. 默认HotSpot最大直接内存大小
  2. jrockit_Java堆空间– JRockit和IBM VM
  3. 如何从Java EE无状态应用程序连接到MongoDB
  4. 使用Vysper,TomEE和PrimeFaces将XMPP服务器嵌入JSF Web应用程序内部
  5. 获取可用密码算法的列表
  6. Java 8 Friday:语言设计很微妙
  7. Java中的访问者设计模式–示例教程
  8. Spring Data REST的实际应用
  9. Doclava:来自Google的自定义Javadoc Doclet
  10. android console命令,我们可以通过两种方式进入Android的console: 1. 直接执行命令emulator -shell; 2....