题目
“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。

得到“答案正确”的条件是:

  • 字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;
  • 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
  • 如果 aPbTc 是正确的,那么 aPbATca 也是正确的,其中 a、 b、 c 均或者是空字符串,或者是仅由字母 A 组成的字符串。

现在就请你为 PAT 写一个自动裁判程序,判定哪些字符串是可以获得“答案正确”的。

输入格式
每个测试输入包含 1 个测试用例。第 1 行给出一个正整数 n (<10),是需要检测的字符串个数。接下来每个字符串占一行,字符串长度不超过 100,且不包含空格。

输出格式
每个字符串的检测结果占一行,如果该字符串可以获得“答案正确”,则输出 YES,否则输出 NO。

输入样例

8
PAT
PAAT
AAPATAA
AAPAATAAAA
xPATx
PT
Whatever
APAAATAA

输出样例

YES
YES
YES
YES
NO
NO
NO
NO

分析
首先题目的三项规则来看,满足条件最小的字符串应该是PAT,也就是P和T之间至少有一个A,一个字符串里面也只能有一个P和T
然后就是在P和T之间和两边用A来填充
根据条件②写成正则式的话是AnPATAnA^nPATA^nAnPATAn都是正确答案(n≥0n\geq0n≥0)
根据条件③,条件②中a=c=AnA^nAn,b=A,所以AnPAATA2nA^nPAATA^{2n}AnPAATA2n是正确答案
当n=0时,PAmTPA^mTPAmT是正确答案,m≥1m\geq1m≥1
从AnPAATA2nA^nPAATA^{2n}AnPAATA2n开始推的话,AnPAAATA3nA^nPAAATA^{3n}AnPAAATA3n,AnPAAAATA4nA^nPAAAATA^{4n}AnPAAAATA4n。。。。。都满足条件
所以规律就出来啦,P和T中有几个A,那么字符串c中的A的格式就应该是字符串a中A的个数的几倍。

最开始并没有看懂意思,题目还是要反复读的!!!

代码

#include<iostream>
#include<algorithm>
#include<string>
using namespace std;int main()
{int n=0;cin>>n;while(n){string str;cin>>str;int tag=0;//循环确定字符串只含有三个字母for(int i=0;i<str.length();i++){if(str[i]=='P'|| str[i]=='T' || str[i]=='A'){continue;}else{tag=1;break;}}//确定只有一个p和一个t,从前往后找和从后往前找是一样的位置if(tag!=1 && str.find("P")==str.rfind("P") && str.find("T")==str.rfind("T")){int p=str.find("P");int t=str.find("T");//截取abc三个子串string a=str.substr(0,p);string b=str.substr(p+1,t-p-1);string c=str.substr(t+1,str.length()-t-1);//判断即可出结果if(b.length()>0 && a.length()*b.length()==c.length()){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}}else{cout<<"NO"<<endl;}n--;}     return 0;
}

还有一直都觉得我的代码不够精简正在思考中

PTA Basic 1003 我要通过相关推荐

  1. PTA(Basic Level) 1024:科学计数法 (C语言实现)

    PTA(Basic Level) 1024:科学计数法 (C语言实现) 学习:正则表达式输入%[0-9],输入字符0-9,输入其他字符,则从此字符处被截断,如输入12345a123,则接受字符串为12 ...

  2. PTA(Basic Level) 1072:开学寄语(C语言实现)

    PTA(Basic Level) 1072:开学寄语(C语言实现) #include <stdio.h>int main() {int n,m,k,i,j,t,count1=0,count ...

  3. PTA(Basic Level) 1076:Wifi密码(C语言实现)

    PTA(Basic Level) 1076:Wifi密码(C语言实现) #include <stdio.h> #include <ctype.h> #include <s ...

  4. PTA(Basic Level) 1086:就不告诉你(C语言实现)

    PTA(Basic Level) 1086:就不告诉你(C语言实现) 方法一: #include <stdio.h>int main() {int a,b,n,sum=0;scanf(&q ...

  5. PTA(Basic Level) 1069:微博转发抽奖 (C语言实现)

    PTA(Basic Level) 1069:微博转发抽奖 (C语言实现) 分析: ①如果转发人数<第一个中奖序号,一定没人中奖,反之,至少有一个人中奖: ②对于下一个间隔为n的人,判断之前是否中 ...

  6. C++学习之路 | PTA乙级—— 1003 我要通过! (20分)(精简)

    1003 我要通过! (20分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件, ...

  7. 牛客网 PTA乙级真题 1003 数素数

    数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...

  8. PTA平台 · PAT(Basic Level) Practice(中文) 题目集

    前  言 ※  PTA是 程序设计类实验辅助教学平台 ,里边包含一些编程题目集以供练习. ※  PAT是 浙江大学计算机程序设计能力考试(Programming Ability Test),分为乙级( ...

  9. PTA 1003 我要通过! (20 分)

    1003 我要通过! (20 分) "答案正确"是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的"答案正确"大派送 -- 只要读入的字符串满足下列条件 ...

最新文章

  1. 瞧!老师的屏幕是如何被学生的弹幕玩坏的......
  2. android 新浪财经截屏分享,[图]Android 12截图曝光:启用全新UI 增强隐私保护功能...
  3. sqlserver2008r2数据库关联孤立账号的方法
  4. Linux系统中网络配置详解
  5. 基于规则的应用程序开发实战(转载与MSDN)
  6. 50matches:更准确的搜索引擎
  7. solr java score_java-Apache Solr:按位运算来过滤搜索结果
  8. 扬州大学c语言上机作业答案,扬州大学C语言上机作业1-9整理
  9. docker下nginx反向代理和负载均衡配置
  10. truetype字体怎么转换成普通字体_win10肿么安装truetype字体
  11. 2020年亚太杯数学建模竞赛赛题
  12. R软件中调用windows字体二
  13. 高维数据存储 —— R 树
  14. 配置RHEL7的vnc
  15. mac VMware fusion配置nat网络
  16. PDF文件加密解密-文件设置密码
  17. matlab频谱分析中振幅的物理意义,频谱图分析的意义,频谱图的物理意义是什么呢,频率的振幅能够反映什么物理意义呢?(例如下图)请哪位大师指点,不胜感激!...
  18. 【机械仿真】曲柄摇杆机构运动仿真含Matlab源码
  19. java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案
  20. 总结numpy中的ndarray,非常齐全

热门文章

  1. Java基础语法-关键字、数据类型
  2. java 错误 找不到符号_Java错误:找不到符号,也找不到原因
  3. Android 屏幕适配的一种方案
  4. Windows组策略屏蔽U盘
  5. 研报精选230219
  6. mysql流量控制_freeradius中rlm_sqlcounter模块对时间和流量限制的实验笔记
  7. 【汇智学堂】-python小游戏(太空阻击之九-添加游戏声音与积分)
  8. 友盟集成第三方登录--微信、QQ实现
  9. 部署Neo4j +Rasa+Rasa UI
  10. Mysql B+树索引