题目描述

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

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

输入描述:
输入只有一行,包含一个字符串,长度不超过105,只包含P、A、T三种字母。

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

输入例子:
APPAPT

输出例子:
2

测试用例

例1:

PTAAATTAPAAPAATATAPATTPPTPTPTPAPATAPPTPPATAPPTPATPPPTTTTTAAAAAATAPTPAPTATPAPTAPPATAAPTAAATTTAAPPPPATAPATPPTATTPTAAPAPTAPATTPPPPTTAAPPTPAAPTAPAATTATTTAATATATPAPPAAAPPATTAPTATTAATAAATAPAATPAPAAATTPATATTTTPPAPTPAAAAPATPPTPAPPPTAPPPTATPATAAPPTPPATPTTAATATTPPAPTPAPPTPPTTPAPAATTPPPTAAPAATATAPPTATPTTPTAPATAPAPAAPAPTAPPTPAAAPTTPATPTPTPAPPATTAAAATTPTAPTAPTTATAAAPPATAAPAPPPAAPTAATPPPPTAAAAATTTPAPTTPPATAAPTAATPTPTTATPAPPPAAAPTAAAPPPTPAPPPATTPTPPAPPATTATPAPAATPTTTTPTTATAAATPPAPATTPTTTATATPPTTPPAAATPTPAPPPPTATPTTTAPPTTTPPPAAPPTTPTPPATPTPPAPPAAATPPPPAPATATPATATATTTPTPAPTTTPAATAPPTTAAPATTTPAPPTPPPPTTPAAPTATPTTPTTPATTPPPTPPAATPATPAAPATPPTAAPTAPTPTPAPTTAAPTPTAATPPTPTATTPAPTAAAAPPPTTTAPPTAPTATAAATATPTPTTTAPTTAPTPTAPPTAPTPTATPATAAAAPTAPTTTAPTPTATAAPTPTTTPATTPAATPAAATTTTTPTAPPTPATTAPTPATATTTTAPTAATPAPPTPAPAAPPPATATPTPPPAATAATTAATPTAPTTPTPTPTPATTAAATPAPAAPTTPTPATTPPPPPAAPPATPTAPTPPPPAPPPTATAAPATTAPAAPPPTTTATATATTPAPTTAPPPPAPTATTTAPATPTAPPATTTTTPPPAPPPAAAPPATPPPAPPPAAPAPATAPTAPATPPAPTTAAPATPTAAAPAAATTPTTPATAAPPAAATPAAPTAAPPTTTATPTTTTATPAPPTPPTTTAPPTPTPTTTATAAAPPTPPTPPPAPTTTPTPPAAAAPTAAATTAATTATPAPATTAPTAPTAPTTTPTTTATATTPTPPTAPATPAPTPPPPAATAPTPPPATAPAAPPPPAAPPPAPPATAAAAPTPPTPPPTAAPTTPATTPTATPAPPAAAATTPTTATAPPTTTTTTATPPTTTAAAAPTPAPPAPPTPATPPTTAPATTTPTTAAPTTPAPAPPTPPPPATTTPAATTPTTAAPATTAATPPPTPTPPPATTAPAPPAPPTPAPPPAAAPTTTTATPPPPPPTPPTPTTTTATAPPAATAPPTPPTPAPPPPPAPPPPTTTAPPAPAAATTTPAPAPPAATAAPATPATTTTPTTTAAPTPATTAPPPTTATPTPPPTPPAPPAAPPAPTPAPATPATAATTTPPTTTPPTPAPTATAPPPAATTAAPPPTATAPPTTATATTTPAATATPPAAPPPTAPPAAPATTATTAPATATPTAATAAAPPPATPTTTPPPPTATTTPTPTPTTPPTAAPTAAPPTAAAAAAATPATPPPTPAPPPTAPTTTTTPPTTTATTPPTTPAAAATPATPPTAPPATTATPPPTPPTPAAAPAPPATPATTTAPTTPPTTAPPPPAPTAAPTPTPPTTPTPTPAAPPAAPAAATTTTTATTPAPAATPPAPAPTPPTTTTPTTATPTTTTPAPAPAAAPTPAAPAAPAPAAPPTTPPAAAAPTPATTPAATPTATPAPPTTAAPPTTPTPTPTPPTAATPAPPAATAATAAPPTPAPTAATAPTAAAAAATPPPAPTTTTTTAATPPAPPAPPAATPPTATTAAPPTATTTAPAAPPPPTTTTPTPAPTTPTATAPAAPPAPAPAAPPATPAATAAAPTPPAPPPTATTATTPAAPPATTTATAAPTAPPTATTTTAPAATATPATPATAAPAPATAPATTTAAAAPAPTPPPAAPPATPTAPPPATTAPTAATATATATPTTAAATTPPTPPAAPTTPPTTAAATPPPAAPPPTTTTATPPPPATPTPPPTPPTPTAPAAPPAAAPPPTPTPATTATTTAPPPPTTTATPPAPPPPPATTPPPTPATPAATAPATPTPATATPTTTATPAPAAATPATTATTATPAPTAPTAATTTPATPTTTPAPTAATTPATPAPPTAAPPAPPTPPPATAPTPAAATTTTPPPPTPTTTTPPPAAPTTTATPTPAAAPATATAAAPAAAATPPTATATTPTTPAAATAAAAAPTPAATAAPPAPAATAPTTAPAPAAAPPATAATTTATTTPPTPAAPTPTAAAAPPPAPAPATPPPAAAAAAAATPTTPTPPPAAPAPPTTTTPTAAAATPAPATATPAAAPATPPPTTPPTPPAAAAPAAAAAPTAPPPPTTPAPTAAAPAPAPAAAAPPATTTATPAAPAATAATPPTTPPPPTTTTAPAPTAPATATPTPPAATAAPAATPPTPPPTTAPTPTATATTPATPTAAAPPTTTAAAAAATPAPPTPTAPTTPPTPPTPTTTPTTTTPTPPAAAAPTPAAAATTATAAAATTTPTPTAAPAPATAAPATTAPPTATTTAATPATPPAAATTATTATPTATPAPTTPAPPAAAAAPTAPAPAPTAPAPATTPPAAPPTATPTTPTAPPATPPPAAATTAPTPAAAPAPAPPTPATAAPAAPAPAPAPTATAPPTTAATAAPAPAPAAAPPATTPPTAPTPTAPPTATATTAAAPPATPATATTPATAPTATPTPPPAPAPAPPPTTAATAAPATPATTAPATPAAPATPAPAAAPPAAPPAAAPPPPTPAPPATTTTTATATTAPTPAPAAPAAAATTAATAAPPAPTTTTAPTPTTPAPATAPPTPTAPPPAPTPPATPAPATTPTAPAAATPPPPPPAATTTPPPPATPTTAAPPPTAPTATTAAAPAATTPATPPTTTTATTAATTTATTPPATAATTATAATAPAPPAAPPPTPTTTAATPPAATTTTPTPATTPAAAPTAPATTTPAAPPTTTPPPPPPPPTTAAPTPAAPTPTATATPPTPATPTTAPTPTAPPTPPATPAPTATPPTPPAPAPAPTPTAPTTTPAAPAATAAPPATTTAPPAAPTPATPAPATAAPPTTAPAATTAAPAAATPAAPPPTPTPTPATPPAPPATPPAAAAAATATAPPPPTPAAATTAAPTTAPTPPPAATTPPTAPTAPPTATAAAAPAAATPAAATPTPTAAATTAPPTPTTTTTTTTTATPTPPTATPAAPPPPPAPATTPPAPTTTTATAPAPAATPAPTTAPPTPTPAPAATTAATAAATATTPATTAPATPTATTAPTTTAAATAPTTPAATPAATPPATATTPTATATPPPPATPTPATTTTPAATTTPAPPATPAAAPTTPPPTPAATATAATPTPTPPATPPAATATTATATAPPAAAAPTPTAAPPAAPAPPTTAAATTPATAPTTAPAPTTPTAATTTPTPATTTAPPTTATAAAPAPATPTTAPATTATTPAAPTAPATPAAPAAPTATTAAPTPPAAPATTPTPTPTAAPTTPATAPPPAATTPPPAAAATTAPPAAPPTTPPTTPTAATAAPPPPTATTAPATPPTPPTAAAPAPTAAPPAAPPPATTPAAAPAAPPPPTTTTPATTPTPAAPPAPPPTTATAATPPPAATPPPTATTPTPATPPPAAPPTTATPPTTPAPTTTAPPAAATAPAAAPPTTTPPTPPTTAPTTAPAATPPATAPPPATTTTPPTATPPAATPTPAAAAPAATAAAAPTTTPAPAAAAPTPAAPAPPTAATTPPTPTATAAAAAAAPTAPPATATTATTPATAPTTPTTAPPATTPTAAATPPAAPAPTPAPTPAPAAPTTAATAPATAATPATTTPPPPPATPTTTTAAAPAPPTPTTAPATPTTPPTATATPAPPTTTTAAPTATATTPTPTAAATAPTAATTATPATTTPPATATATPPPPAPTAPATTPAPPAPPAPPTPPPTPATPTTPATPTPPATAPAAATAPPTPAPTPTTPTPTTAPAPAAPAPAPPATTTPAPTTAPATPPAAPTPTPPPATAATPPTTTTAPATATAPTTPPAPAAPPTPPTPTAATPAAAAATAPTAAATTATPATPAPTPPTPPTAPAAPATATTAPTTTTTAPTPTAAAPAPATPTTPTTAPAAAATPAAPPPAPPTTTTTTPAPPTPTTPAAPAPPTPPTTAAATTAAPPTTTTAPPAPPTTATAATTTATAATATATAATPPPATPPATPPAPTTTTPTPAAPTAPAPPPTPPATTPATTATTPAPTTPAPATPTATPTTAPAATTTAAPTAAATATAPAPTPTTPPPTAAAPAAATAPATPAPTTPTAPPPTTPTPPPATAAATPATTATTTTTAAATTTAPATTAPPPTTPATPAAAPTAATPPATTTAATATPPAPAATAPAAAAAPPTATTATPPTATAPAATATTPPTPTPTAPPTPTATTTAAATTAPTTPTPPTATTTTTPTPTTPATTPPAPATAAAAPTTAPPTTTPAATPTTTAPAPPPPPTPATTTTTPAAPPAPAATPTAAPPAAPAATATTTPTPPPAAATAPAAAPTTTPPAAAATAPPTPPAPTTAATAPPPATPPPAAPATPPTTTATPTPTPTPTTPTAPTTPAATPAATAATAPTTPAATTPATTAAPTTATAAATAPTAAAPTATTPAATPAAATAPTPPAAPATPTTTTTAAATTPPPPTTPAPATAATTPPTPPTPAPPPPATTPAPAAATTPTPTPAAPAAAPAPPATPPPTTPPAATPAPAPPPPPPPTPPTPTAPPAPATTTPAPTPTPTAPAPPAAPTTTPPPAPPPPPTATPTTPPPAPPAPTAPTPTAATATTTTPTTPPPPAPPPTPPTATTAATPATTTPPTPATPAPPPPATATPPPTAPPPAAAPAATPTTAPPATTTPAPAPATTATAATPTPAAAAAPPPAPAPPAATAATAPPTATTPPPTATTPPAATTTAPATTAPPTPPPTPPTPATPPPAAPAAPAPATPATTTTTAATAAPPPATPTTPPPATTPTATTPTAAPTPATATPAPPAPAPPPTTAPTTTTPTPAPPAPATTTPAAPPPPPTTAAATTPAAPTAPAAPAPTTTTPTATPATAATPPTPPPPAAPTPPTATPAPPTTPTPPAPTAAPTPATPAATATPAAATPPAATTPPPPTPPAPAAAPTAAAPPPTTAAAAATPTATAPATTTAPPPATPTTPAPTAPPPPPPAPTPTTPPPAPPTTPAAAAATTATPTTTPTAATATTTPTPTATAATATAPTPPTPAATAPPAPAPAAAAPPAATPPTTPPPAAPTPAAAATPTTPPPPAPAATAPPPTATTPTTTPTPTTTTAPATATPTAPPAAPPAATAATPPPAPTPTPTTPPAATAPTATATTAAATPATPTTATTPTTPTATPPPATAPTTPPPAAPATTAPTPPATPAAPPPTPAATPTPPPPTATPTPTTPPTATPPATPTPATPATAPTPPPATTPAPAPAPTTTTATTTAAAPTAPAPPPTATPATPPTPATATTAAAPTPPPAPTTTTAPPAATPPAAPAPATPAAPATPAPTTPPAAPPAATPATAPAAPAATTTPPAPTAPPPTAAPPATATAAPPTTPTPPPTTPTATPTPTTPAAATATAPATAPPTPAPPTTAPPTPPAAATAAPPATTPAAAPTPAAPTPPPAAAAPTPPPAPPAATATAAPPPPAPPPPAATPPPTPATTPPATATTPPTPAATAATPAPATTAPTAPAAPTTPPAPTTAPPTAPPATPATAPAATPATPTATATPTTTATPAATPTTAPTATTTTPPPPAAPTTTTPPPTPPTTATTAAAPATTPPPTTPPPPPPAPTAAPTPPPPTPAPTPTAAPPAAATTTAPPPPPPPATPPAAPAPTAPAPAATPATPTPTTPAAAAATPAAAPTTPTAAPTAPPATAAAAPTAPAPTTTPTTPPPTAATAATTPTTPPAAAPPPPAPTTPTTPATATAAATATAPTAATTTTTTTPAPTAAPAAPAPATTTTTTAATPPPTTTTAATPTPTPAPTPPTPATATTTPAPPPTTATAATPTPATATAATPAPTAPPPPPTPTTTTPPPTAPAPPPPTTPTTAPTAPPPAPPTPTPPATPPPTAPAAAATPTATPPTPPAPTTTPAPTPAPPPAPPTPAATPATAPTAPPAAPPTPPTAAPATPPAAPTTTPAPTAATAAAPPAPPAPAPAATTATAATTATTPPPPAPPTTTTPTAPAPPPPPAAPAATTATATTPAPPAPTPAPAPPTPPTPAATTTPPPPAPPATAPTPTTATPAPAPTTPPTTATAAPTTATTTPPPTAATAPPTATPATPAATAPAAAPAPPTPTAATAPPTTPTATTAAAPATAATPATATAPTTAAATTATTTPPAAAAAATAATTTPPPATAAPAAATPPPTTPPPTPTPAPTTTPAAPAPPAPAPAAATATPTATTPPAAATTTPAPPATATPTAAPTPAPTAAPTAPAPATAATTPTPPPAPPTPTPTTTAAPATAPTTTAPPPTAAATPAPPTTATAAATAAPAPTPAPAAPTATPPTTAPATPPTTATAPATTTPTATTPTPTPPTPAAAAATTTPTPTAAPATPPTPATAAPTPTAAPAAAPATPAPPTTTATTTPTPPATTATTTPTPTATAATPTTAPTATTPPPPATTAPPTAPTPAAAAAPPATAAAAAATPATTTATPAATAAAATPPTAAPAPATAATTTAAAAPATTPAAAATATTPAPPPAPPAPPAPTAAAAPPPPTAATPATPPAPPTPAPAATTPPPAPPPTAATAPAPATPTPPPAPTAAATAPTPPTPTPTTPPAPTATTPTPATAAPAPPAPAAAATTTTTATAPAAATTPTATPTPPPATPTPTPPAPTPTTPATTPPATPATPAPPPATAPTATATAAPPTATAAPAPPPTPTPAPTPATPAPAPPAPTPPTTPTATPPPAPATAAPAATAAAPAPTTTTPTAATPPTTAPAPPPAATTAATTTAPAPPATTPPTATATTATTAAATTTAPATATTTTTPPAPAPATTPTPAAAPPPAPAPAPPPPPPAAATATPAAPATTTPTATTTPPPTPPPTPPAPPTAP
答案:424603361

例2:

APPAPTPAT
答案:8

例3:

APPAPT
答案:2

代码1 正确代码

此算法O(2)复杂度
思路是一个A左边的P的数量和右边的T的数量相乘,得到的就是当前A能够组合的总PAT个数
然后再对每一个Ai,都计算出PiTi,则∑PiTi就是正确结果

#include<iostream>
#include<string.h>
using namespace std;
int main()
{char a[100000] = { 0 };scanf("%s", a);char pat[4] = "PAT";long long int length = strlen(a);long long int i, j, k;long long int totalPAT = 0;int P = 0, A = 0, T = 0;for (i = 0; i < length; i++){//printf("\ni=%d\n",i);if (a[i] == 'P')//统计P的数量 {P++;}if (a[i] == 'A')//找到一个A {for (j = i; j < length; j++)//统计T的数量 {if (a[j] == 'T'){T++;}}//printf("P=%d,T=%d\n",P,T);totalPAT += P * T;//printf("total=%d\n",totalPAT);A = T = 0;}}//APPAPT //APPAPTPATcout << totalPAT % 1000000007;
}

代码2 超时代码

O(3)复杂度,所有测试用例全部超时,而且计算过程好像已经溢出了。
三个循环大嵌套,容易理解
代码和思路都没有错,但是因为内存和时间限制,OJ上运行结果不正确
自己跑了一下需要13秒

#include<iostream>
#include<string.h>
using namespace std;
int main()
{char a[100000]={0};scanf("%s",a);char pat[4]="PAT";long long int length=strlen(a);long long int i,j,k;long long int totalPAT=0;for(i=0;i<length;i++){if(a[i]=='P')//如果是P,找后面的A {for(j=i;j<length;j++){if(a[j]=='A'){for(k=j;k<length;k++){if(a[k]=='T'){totalPAT++;}}}} }}cout<<totalPAT%1000000007;
}

牛客网_PAT乙级_1029有几个PAT(25)【输入字符串并strlen计算长度】相关推荐

  1. 牛客网_PAT乙级_1019. 数字黑洞 (20)

    总结 注意!! 想要在函数中结束程序,一定不要用system("pause");,因为这样只是让程序暂停,结果就是运行时间超时,无法通过所有的测试用例. 那么,C++ 程序中什么函 ...

  2. 牛客网_PAT乙级_1010月饼 (25)

    因为黑框框里放不下,(非官网)测试用例用txt导入: 这题有一个陷阱,官网上说给非0数,测试用例却出现了0,0吨的月饼能卖507元,而且这样的月饼要最先卖,因为它的price是inf,卖掉0吨净赚50 ...

  3. 牛客网_PAT乙级_1028到底买不买(20)【用iterator迭代器,对两个vectorchar比较,删除相同元素】

    题目描述 小红想买些珠子做一串自己喜欢的珠串.卖珠子的摊主有很多串五颜六色的珠串,但是不肯把任何一串拆散了卖.于是小红要你帮忙判断一下,某串珠子里是否包含了全部自己想要的珠子?如果是,那么告诉她有多少 ...

  4. 牛客网_PAT乙级_1027在霍格沃茨找零钱(20)

    题目描述 如果你是哈利·波特迷,你会知道魔法世界有它自己的货币系统 -- 就如海格告诉哈利的:"十七个银西可(Sickle)兑一个加隆(Galleon),二十九个纳特(Knut)兑一个西可, ...

  5. 牛客网_PAT乙级_1025插入与归并(25)

    题目描述 根据维基百科的定义: 插入排序是迭代算法,逐一获得输入数据,逐步产生有序的输出序列.每步迭代中,算法从输入序列中取出一元素,将之插入有序序列中正确的位置.如此迭代直到全部元素有序. 归并排序 ...

  6. 牛客网_PAT乙级_1026跟奥巴马一起编程(15)

    题目描述 美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014年底,为庆祝"计算 机科学教育周"正式启动,奥巴马编写了很简 ...

  7. 牛客网_PAT乙级_10234有理数四则运算(20)【通过5/7:格式错误】

    题目描述 本题要求编写程序,计算2个有理数的和.差.积.商. 输入描述: 输入在一行中按照"a1/b1 a2/b2"的格式给出两个分数形式的有理数,其中分子和分母全是整型范围内的整 ...

  8. 牛客网_PAT乙级_1023旧键盘打字(20)【别人代码里用到的hash是啥】

    心得 关于如何找到个别测试点通不过的原因: 复制别人的正确的代码,和自己的代码运行相同的测试用例,比较两者之间的区别 ??别人代码里用到的hash是啥?? 题目描述 旧键盘上坏了几个键,于是在敲一段文 ...

  9. 牛客网_PAT乙级_1022挖掘机技术哪家强(20)【class vector sort排序、删除重复元素】

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

最新文章

  1. 使用正则表达式抽取新闻/BBS网页发表时间
  2. mysql mpm_zabbix mpm 监控 mysql性能
  3. node多版本管理--nvmw
  4. java让服务器停止运行,java调用远程服务器的shell脚本以及停止的方法实现
  5. CodeForces 1396E Distance Matching(构造+树的重心+dfs+set)
  6. 关键字驱动测试示例_带有示例的False关键字
  7. 分布式事物框架Easy-Transaction--使用入门介绍
  8. struct类型重定义 不同的基类型_C++学习大纲:联合类型
  9. 技术中台构建思路及进展_半年中台实践思考:落地中台,贵在其神,活用其形...
  10. MySQL之Got fatal error 1236 from master when reading data from binary log
  11. Java设计模式之工厂模式
  12. SmartUpload
  13. android 动画卡顿分析工具
  14. html 边框重叠问题,详解css边距重叠的几种解决方案
  15. 【linux】net-speeder减少由于网络距离过远导致的丢包问题
  16. 计算机网络: 码元 波特 速率 带宽
  17. rating vs nominal 额定和标称区别
  18. 一位苦读6年终于毕业的博士说出了读博的四个陷阱
  19. 变量(什么是变量/变量的声明/命名的规范)
  20. 6-1 安全产品防火墙(完)

热门文章

  1. Python配置-virtualenv和conda的区别
  2. 逆向工程核心原理学习笔记(三):检索API方法
  3. EV3 直接命令 - 第一课 无为的艺术
  4. MySQL 中存储时间的最佳实践
  5. 精美技术图赏|技术精华
  6. Linux 写时复制机制原理
  7. 有理有据!为什么String选择数字31作为hashCode方法乘子?
  8. 这里有一份面筋请查收(八)
  9. Java守护线程概述
  10. 音视频技术开发周刊 | 240