题目描述

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

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

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

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

输入样例:
APPAPT
输出样例:
2

实现代码

实现代码一(暴力求解)
运行超时

#include<iostream>
#include<string>
using namespace std;int main(void)
{string s;getline(cin,s);long long count=0;for(int i=0;i<s.length();i++){if(s[i]=='P'){for(int j=i+1;j<s.length();j++){if(s[j]=='A'){for(int k=j+1;k<s.length();k++){if(s[k]=='T'){count++;}}}}}}cout<<count%1000000007<<endl;
}

实现代码一-平台运行结果

实现代码二(从后往前计算)

#include<iostream>
#include<string>
using namespace std;int main(void)
{string s;getline(cin,s);long long sum=0;long long countT=0,countA=0;for(int i=s.length();i>=0;i--)//从后往前计算 {if(s[i]=='T')//提前计算出所有的T的个数 {countT++;}else if(s[i]=='A')//每遇到一次A就进行一次计算 {countA=(countA+countT)%1000000007;}else//最后每遇到一次P,就进行一次计算 {sum=(sum+countA)%1000000007;}}cout<<sum<<endl;
}

实现代码二-平台测试结果

实现代码三(从中间计算)

#include<iostream>
#include<string>
using namespace std;int main(void)
{string s;getline(cin,s);long long sum=0;long long countT=0,countP=0;for(int i=s.length()-1;i>=0;i--)//先计算出P的个数 {if(s[i]=='P')//提前计算出所有的T的个数 {countP++;}}for(int i=s.length()-1;i>=0;i--){if(s[i]=='T'){countT++;}else if(s[i]=='A'){sum+=(countP*countT);//排列计算数目sum%=1000000007;}else{//已经跳过一位,需要减去一个PcountP--;}       }cout<<sum<<endl;
}

实现代码三-平台测试结果

PAT乙级-1040 有几个PAT(多种实现)相关推荐

  1. Pat乙级 1040 有几个PAT

    Pat乙级1040 有几个PAT 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/9948052823899 ...

  2. PAT 乙级 1040 有几个PAT (25分)

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

  3. C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)

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

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

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

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

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

  6. PAT Basic 1040. 有几个PAT(25)(C语言实现)

    我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容.此处文章目前已更新至与Github Pages同步.欢迎star我的repo. 题目 ...

  7. 【PAT乙级】有几个PAT

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

  8. PAT乙级题目索引(题目+解析+AC代码)

    题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 ...

  9. pat 乙级 1029 旧键盘(C++)

    题目 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字 ...

最新文章

  1. mysql第一二章笔记_MYSQL必知必会读书笔记 第一章(基础)
  2. 自由自在意式手工冰淇淋走俏仲夏之季
  3. 日期操作类DateUtils
  4. SpringBoot配置文件绑定到Java Bean
  5. matlab实现查值,[数学建模(六)]使用MATLAB实现插值
  6. asp.net基础 笔试题(全解完整答案)
  7. 视频教程-【思科CCNA理论专题:9】-- ACL理论-思科认证
  8. 制作一个PHP互动网页
  9. 光有想法怎么开技术公司?
  10. vue填坑之全局引入less,scss,styl文件
  11. 用excel制作双层饼图_Excel做的双层饼图,太漂亮了
  12. mysql复制一行sql语句_MySQL复制表数据操作sql语句
  13. android tf卡 修复工具,SD卡恢复修复工具RecoveRx 3.2中文免费版
  14. pearlovell
  15. cyclic behavior during switching
  16. 最值得看的文章之一:林锐《大学十年》
  17. 谷歌人工智能影响挑战的受益者 | 硅谷洞察
  18. 中国国内可用API合集
  19. MongoDB相关概念
  20. windows企微应用双开/多开

热门文章

  1. 再一次改变震颤, iPhone 6s的Taptic Engine震动马达有多神?
  2. 香港大学MSc面试经验分享 | 2019.2.23北京场
  3. Educational Codeforces Round 114 (Rated for Div. 2)C. Slay the Dragon
  4. python学英语视频教程_python教程(入门, 经典, 英文)
  5. java上机实验心得_java上机实验心得体会报告
  6. linux元年时间搓,发布基于ANSI-C的RTC_Time库,利用UNIX时间戳格式,无中断实现万年历...
  7. php防注入,表单提交值转义
  8. Mobx 源码解析 二(autorun)
  9. 2021东南大学916复试备考——英语问答篇
  10. SWUST OJ916:吉姆的发现