题目描述

字符串 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. [zt]数学之美番外篇:平凡而又神奇的贝叶斯方法
  2. CentOS 使用 Docker 安装 Sentry
  3. java集合租车_Java入门第二季 租车系统
  4. JSONArray.fromObject不执行且不报错问题的解决
  5. Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
  6. Linux Shell脚本专栏_批量主机远程执行命令脚本_08
  7. containsall_Java Vector containsAll()方法与示例
  8. C语言各种排序算法(冒泡排序、快速排序、插入排序、希尔排序、快速排序、 归并排序)
  9. 计算机图形学规则形体,计算机图形学教案
  10. HDOJ/HDU 1565 方格取数(1)
  11. java无法使用_在cmd中无法使用java命令的解决方法
  12. ca证书申请流程有哪些?
  13. 蛇形天线设计和分析(转)
  14. 服务器性能检测器,Linux服务器性能检测工具之 collectl
  15. Arcmap技巧总结(豆丁)
  16. 给大家推荐一首好听的流行音乐
  17. 【精】Verilog语言缩写规范
  18. 最新苹果审核被拒4.3解决方案总结(2020年7月)
  19. Android 华为手机ADB调试连接不上的参考解决办法
  20. 模拟QQ自动隐藏窗体

热门文章

  1. linux中history命令
  2. 编程经典书籍:龙书、虎书、魔法书
  3. Proteus元件库对照表 中英文在线查询工具
  4. 软件设计的目标和途径
  5. cmd查询WiFi信息
  6. 1.11 查找最接近的元素
  7. 作为一名程序员我不忘初心,Android岗
  8. 软件模拟股票高抛低吸后各参数变化
  9. C语言系列:2、数据类型、运算符和表达式
  10. 暑假N天乐【比赛篇】 —— 2019杭电暑期多校训练营(第一场)