PAT乙级-1040 有几个PAT(多种实现)
题目描述
字符串 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(多种实现)相关推荐
- Pat乙级 1040 有几个PAT
Pat乙级1040 有几个PAT 思路 代码 题目网址 https://pintia.cn/problem-sets/994805260223102976/problems/9948052823899 ...
- PAT 乙级 1040 有几个PAT (25分)
1040 有几个PAT (25分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位( ...
- C++学习之路 | PTA乙级—— 1040 有几个PAT (25 分)(精简)
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...
- 【PAT】乙级 1040 有几个PAT (25 分) c++
1040 有几个PAT (25 分) 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位 ...
- PAT乙级1040:有几个PAT (25)
题目 字符串 APPAPT 中包含了两个单词 PAT,其中第一个 PAT 是第 2 位§,第 4 位(A),第 6 位(T):第二个 PAT 是第 3 位§,第 4 位(A),第 6 位(T). 现给 ...
- PAT Basic 1040. 有几个PAT(25)(C语言实现)
我的PAT系列文章更新重心已移至Github,欢迎来看PAT题解的小伙伴请到Github Pages浏览最新内容.此处文章目前已更新至与Github Pages同步.欢迎star我的repo. 题目 ...
- 【PAT乙级】有几个PAT
题目描述: 字符串APPAPT中包含了两个单词"PAT",其中第一个PAT是第2位(P),第4位(A),第6位(T):第二个PAT是第3位(P),第4位(A),第6位(T).现给定 ...
- PAT乙级题目索引(题目+解析+AC代码)
题目信息 分值 PAT 乙级 1001 害死人不偿命的(3n+1)猜想 15 PAT 乙级 1002 写出这个数 20 PAT 乙级 1003 我要通过! 20 PAT 乙级 1004 成绩排名 20 ...
- pat 乙级 1029 旧键盘(C++)
题目 旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字 ...
最新文章
- [zt]数学之美番外篇:平凡而又神奇的贝叶斯方法
- CentOS 使用 Docker 安装 Sentry
- java集合租车_Java入门第二季 租车系统
- JSONArray.fromObject不执行且不报错问题的解决
- Win下更新pip出现OSError:[WinError17]与PerrmissionError:[WinError5]及解决
- Linux Shell脚本专栏_批量主机远程执行命令脚本_08
- containsall_Java Vector containsAll()方法与示例
- C语言各种排序算法(冒泡排序、快速排序、插入排序、希尔排序、快速排序、 归并排序)
- 计算机图形学规则形体,计算机图形学教案
- HDOJ/HDU 1565 方格取数(1)
- java无法使用_在cmd中无法使用java命令的解决方法
- ca证书申请流程有哪些?
- 蛇形天线设计和分析(转)
- 服务器性能检测器,Linux服务器性能检测工具之 collectl
- Arcmap技巧总结(豆丁)
- 给大家推荐一首好听的流行音乐
- 【精】Verilog语言缩写规范
- 最新苹果审核被拒4.3解决方案总结(2020年7月)
- Android 华为手机ADB调试连接不上的参考解决办法
- 模拟QQ自动隐藏窗体