1003. 我要通过!_数学归纳

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

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

1. 字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;
2. 任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;
3. 如果 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

做过一遍的题目,居然又不会了啊啊啊啊啊啊啊!!

【思路】数学归纳,p前的A的数目*p和t之间的A的数目=t后的A的数目

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<string>
using namespace std;
char s[106];
int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        scanf("%s",s);
        int len=strlen(s);
        int pcnt=0,acnt=0,tcnt=0,flag=0;
        for(int i=0;i<len;i++)
        {
            if(s[i]==‘A‘) acnt++;
            else if(s[i]==‘P‘) pcnt++;
            else if(s[i]==‘T‘) tcnt++;
            else goto end;
        }
        if(pcnt==1&&tcnt==1&&acnt!=0)
        {
            char* p1=strchr(s,‘P‘);//strchr找到s中的第一个P返回指针
            char* p2=strchr(s,‘T‘);
            if((p1-s)*(p2-p1-1)==strlen(p2)-1)
                flag=1;
        }
        end:
            if(flag!=0) puts("YES");
            else puts("NO");
    }
}
时间: 2024-10-06 19:36:25

1003. 我要通过!_数学归纳的相关文章

[ An Ac a Day ^_^ ] hdu 1003 dp

超时还有可能是数组开小了…… 1 #include<stdio.h> 2 #include<iostream> 3 #include<algorithm> 4 #include<math.h> 5 #include<string.h> 6 #include<string> 7 #include<map> 8 #include<set> 9 #include<vector> 10 #include&l

通过jstack定位在线运行java系统故障_案例1

问题描述: 在一个在线运行的java web系统中,会定时运行一个FTP上传的任务,结果有一天发现,文件正常生成后却没有上传. 问题初步分析: 1.查看日志文件 发现这个任务只打印了开始进入FTP处理的日志,但是没有打印FTP处理完成的日志. 从代码上看,FTP上传处理的代码异常保护都非常的好,如果出现异常,就会进行打印,而日志文件中却没有相关的信息,甚是奇怪.怀疑是FTP过程问题,如对方FTP服务器有什么问题导致,但是却找不到证据. 苦于无法窥探java运行系统内部信息,祭出杀手锏-jstac

百度之星2014资格赛 1003 - Xor Sum

先上代码: Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others)Total Submission(s): 7837    Accepted Submission(s): 3350 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus

1、Codevs 必做:2833、1002、1003、2627、2599

2833 奇怪的梦境 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description Aiden陷入了一个奇怪的梦境:他被困在一个小房子中,墙上有很多按钮,还有一个屏幕,上面显示了一些信息.屏幕上说,要将所有按钮都按下才能出去,而又给出了一些信息,说明了某个按钮只能在另一个按钮按下之后才能按下,而没有被提及的按钮则可以在任何时候按下.可是Aiden发现屏幕上所给信息似乎有矛盾,请你来帮忙判断. 输入描述 Input Description

Linux网络设备驱动(一) _驱动模型

Linux素来以其强大的网络功能著名,同时, 设备'>网络设备也作为三大设备之一, 成为Linux驱动学习中必不可少的设备类型, 此外, 由于历史原因, Linux并没有强制对设备'>网络设备贯彻其"一切皆文件"的思想, 设备'>网络设备不以/dev下的设备文件为接口,用户程序通过socket作为访问硬件的接口.本文以Linux3.14.0内核为例, 讨论Linux中的网络驱动模型 Linux的设备'>网络设备并不使用文件作为用户程序访问设备'>网络设备的

PAT 乙级 1003

题目 题目地址:PAT 乙级 1003 题解 规律观察题,本题的关键在于把题读懂,同时还有几个比较容易疏忽的地方需要注意:总之这道题要考虑的东西更多,细节上也要特别注意: 规律:"如果 aPbTc 是正确的,那么 aPbATca 也是正确的",这是理解本题的关键信息,观察之后会发现,当b的字符串里再增加一个A,那么T之后的字符串就会多出a个A(特别注意,这里的 'ca' 实际上是 c + a 个A字符的关系),那么这个关系也就显而易见了,只有在 a * b = c 的条件下,才会有这样

彻底解决_OBJC_CLASS_$_某文件名&quot;, referenced from:问题(转)

最近在使用静态库时,总是出现这个问题.下面总结一下我得解决方法: 1. .m文件没有导入   在Build Phases里的Compile Sources 中添加报错的文件 2. .framework文件没有导入静态库编译时往往需要一些库的支持,查看你是否有没有导入的库文件同样是在Build Phases里的Link Binary With Libraries中添加 3. 重复编译,可能你之前复制过两个地方,在这里添加过两次,删除时系统没有默认删除编译引用地址在Build Settings里搜索

1003 阶乘后面0的数量

1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720,720后面有1个0. Input 一个数N(1 <= N <= 10^9) Output 输出0的数量 Input示例 5 Output示例 1其实只要循环除五就可以找到规律,其实也可以证明出来. 1 #include <iostream> 2 #include <cstdio> 3 #

python_字符_函数

一.字符集和字符编码 1.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是