转跳点:

1040 有几个PAT (25分)
 

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

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

输入格式:

输入只有一行,包含一个字符串,长度不超过1,只包含 PAT 三种字母。

输出格式:

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

输入样例:

  1. APPAPT
 

输出样例:

  1. 2

  这道题,和之前的我要通过一样属于,烧脑题,代码极简。我可怜的头发。

(在写分析之前先写一下规定,P的个数:Pcount;PA的个数:PAcounT,PAT的个数:PATcount,)

我第一轮分析如下:

  随便写了一个样例,写出了所有可能,得出一些结论:

    1、发现PAT的个数取决于PA个数

    2、PA个数取决于P个数

第二次分析:

  统计了一下每个A前面P的 Pcount,发现每个A对应的 PAcount 是 A 之前的Pcount的数量

  统计了一下每个T前面的PA的 PAcount,发现每个T对应的PATcount是T之前所有A对应的PAcount的累加

  最后统计了一下PTAcount并和每个T前面的PA的 PAcount对比了一下,发现字符串里所有的PATcount是所有T对应的PTAcount的累加

到此就可以得出无比简单的代码了

AC代码

  1. 1 #include <stdio.h>
  2. 2 #include <stdlib.h>
  3. 3 #define LIMT 1000000007
  4. 4
  5. 5 int main(void)
  6. 6 {
  7. 7 char ch;
  8. 8 int P = 0, PA = 0, PAT = 0;
  9. 9
  10. 10 while ((ch = getchar()) != '\n')
  11. 11 {
  12. 12 if ('P' == ch)
  13. 13 {
  14. 14 P++;
  15. 15 continue;
  16. 16 }
  17. 17 if ('A' == ch)
  18. 18 {
  19. 19 PA = (PA + P) % LIMT;
  20. 20 continue;
  21. 21 }
  22. 22 PAT = (PAT + PA) % LIMT;
  23. 23 }
  24. 24
  25. 25 printf("%d", PAT);
  26. 26 return 0;
  27. 27 }

  PS:如果对每次都遇到取余问题都会对这个magic number——1000000007取模感兴趣的话,戳这里≖‿≖✧

PTA不易,诸君共勉!

P1040 有几个PAT的更多相关文章

  1. 《转载》PAT 习题

    博客出处:http://blog.csdn.net/zhoufenqin/article/details/50497791 题目出处:https://www.patest.cn/contests/pa ...

  2. PAT Judge

    原题连接:https://pta.patest.cn/pta/test/16/exam/4/question/677 题目如下: The ranklist of PAT is generated fr ...

  3. PAT/字符串处理习题集(二)

    B1024. 科学计数法 (20) Description: 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法,其满足正则表达式[+-][1-9]"."[0-9]+E[+ ...

  4. PAT 1041. 考试座位号(15)

    每个PAT考生在参加考试时都会被分配两个座位号,一个是试机座位,一个是考试座位.正常情况下,考生在入场时先得到试机座位号码,入座进入试机状态后,系统会显示该考生的考试座位号码,考试时考生需要换到考试座 ...

  5. PAT 1040. 有几个PAT(25)

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

  6. PAT 1032. 挖掘机技术哪家强(20)

    为了用事实说明挖掘机技术到底哪家强,PAT组织了一场挖掘机技能大赛.现请你根据比赛结果统计出技术最强的那个学校. 输入格式: 输入在第1行给出不超过105的正整数N,即参赛人数.随后N行,每行给出一位 ...

  7. pat甲级题解(更新到1013)

    1001. A+B Format (20) 注意负数,没别的了. 用scanf来补 前导0 和 前导的空格 很方便. #include <iostream> #include <cs ...

  8. PAT (Basic Level) Practise 1040 有几个PAT(DP)

    1040. 有几个PAT(25) 时间限制 120 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 字符串APPAPT中包含了两个单 ...

  9. PAT (Basic Level) Practise 1045 快速排序(离散化+主席树区间内的区间求和)

    1045. 快速排序(25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CAO, Peng 著名的快速排序算法里有一个经典的划分 ...

随机推荐

  1. Spark教程——(10)Spark SQL读取Phoenix数据本地执行计算

    添加配置文件 phoenixConnectMode.scala : package statistics.benefits import org.apache.hadoop.conf.Configur ...

  2. Nacos client 客户端cpu占用100% 问题排查和解决方案

    Nacos version:1.1.3client version:1.0.0 dependency: 'org.springframework.cloud:spring-cloud-alibaba- ...

  3. Mongodb - 解决 ( aggregate聚合管道 ) $match 根据 id 匹配 返回 [ ] 的问题

    需要对 id 进行转换 const mongoose = require('mongoose') var ObjectId = mongoose.Types.ObjectId;   await Use ...

  4. Linux centosVMware Apache 配置防盗链、访问控制Directory、访问控制FilesMatch

    一.配置防盗链 通过限制referer来实现防盗链的功能 配置文件增加如下内容 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //改为如下 ...

  5. 6(计算机网络) 交换机与VLAN

    拓扑结构是怎么形成的? 我们常见到的办公室大多是一排排的桌子,每个桌子都有网口,一排十几个座位就有十几个网口,一个楼层就会有几十个甚至上百个网口.如果算上所有楼层,这个场景自然比你宿舍里的复杂多了.具 ...

  6. 说说maven依赖冲突,依赖调解,依赖传递和依赖范围

    说maven依赖冲突之前需要先说说maven的 依赖传递. 依赖传递 当前项目引入了一个依赖,该依赖的依赖也会被引入项目.更加准确的说法是,maven会解析直接依赖的POM,将那些必要的间接依赖,以传 ...

  7. Flask - 中间件

    其实就是封装旧酒,装进新瓶,自己再加点料.留坑,还没有用到. Flask的请求扩展就是Django的中间件.Django的中间件不是Flask的中间件 from flask import Flask ...

  8. 项目根目录下.gitignore

    7.项目根目录下.gitignore  # 此为注释 – 将被 Git 忽略  *.a # 忽略所有 .a 结尾的文件  !lib.a # 但 lib.a 除外  /TODO # 仅仅忽略项目根目录下 ...

  9. react基础总结

    React的特点: 1.声明式: 可以声明式的在js中写html结构: 注意: react是用很像 js 的语言写标签; const jsx = <div className="app ...

  10. Day9 - F - Monkey and Banana HDU - 1069

    一组研究人员正在设计一项实验,以测试猴子的智商.他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子.如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉.   ...