1040. 有几个PAT(25



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

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

输入格式:

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

输出格式:

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

APPAPT

输出样例:

2

错误代码:

/*************************************************************************> File Name: 1040.c> Author: YueBo > Function:有几个PAT> Created Time: 2016年11月19日 星期六 15时30分09秒************************************************************************/#include <stdio.h>
#include <stdlib.h>
#define NUM 1000000007
int main()
{char patString[100000], ch;int i, j, k, N = 0, sum = 0;while ((ch = getchar()) != '\n') {patString[N] = ch;N++;}for (i = 0; i < N; i++) {for (j = i+1; j < N; j++) {for (k = j+1; k < N; k++) {if (patString[i] == 'P' &&patString[j] == 'A' &&patString[k] == 'T') {sum++;sum = sum % NUM;}}}}printf("%d", sum);return 0;
}


这个庸俗的算法是地球人都能想到哒,下面观察几个量的变化,看能否想出一个新算法呢?
APPAPT(假设第一个位置是0,最后一个位置是5),aCnt表示A的数量,apCnt表示AP组合的数量,aptCnt表示APT组合的数量。

0--> pCnt = 0  paCnt = 0  patCnt = 0

1--> pCnt = 1  paCnt = 0  patCnt = 0

2--> pCnt  = 2 paCnt = 0  patCnt = 0

3--> pCnt = 2  paCnt = 0+2 patCnt = 0

4--> pCnt = 3  paCnt = 2 patCnt = 0

5--> pCnt = 3 patCnt = 2 patCnt = 2

结合下面的代码可理解上面的过程:

/*************************************************************************> File Name: 1040_1.c> Author: YueBo > Function:> Created Time: 2016年11月19日 星期六 23时40分11秒************************************************************************/#include <stdio.h>
#include <stdlib.h>#define NUM 1000000007
int main()
{long long pCnt = 0, paCnt = 0, patCnt = 0;char ch;while ((ch = getchar()) != '\n') {if (ch == 'P') {pCnt++;} else if (ch == 'A') {paCnt += pCnt;} else {patCnt += paCnt;patCnt %= NUM;}}printf("%lld", patCnt);return 0;
}


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/421276.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的世界服务器显示不出地图,为什么我的世界服务器地图加载不了

期中一段&#xff1a;java:751) ~[ahb.class:?]at net.minecraft.world.World.func_147439_a(World.java:677) ~[ahb.class:?]at com.tmtravlr.jaff.entities.EntityFish.isInTank(EntityFish.java:89) ~[EntityFish.class:?]at com.tmtravlr.jaff.entities.EntityFish.func…

dataGridview与下拉框高级绑定

//在dataGridView里批量显示所有数据string sql "select * from mingxing";SqlConnection con new SqlConnection(address);//今天所学,生成适配器工具sda,批量读取(读完)SqlDataAdapter sda new SqlDataAdapter(sql, con);//创建对象dt,可以理解为是客户端的一个…

1041. 考试座位号(15)

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

前端学习(971):swiper插件使用

引入 2复制div部分 不要修改里面的文件 3复制css样式 4复制js 注意winows.addEventListener 加载后使用 5运行结果

登录的基本逻辑

登录的基本逻辑 1,验证账号密码的正确性 与数据库相匹配的代码 string sql "select count[*] from 表名 where pwd ‘’ and ac ‘’ "; //单值结果(0/1)判断是否正确,有一条结果返回。 using System.Data.SqlClient; public static string address “Data So…

ncm转MP3的工具

网易下载歌曲,发现带有.ncm的歌曲不能听,所以我查资料,怎么解决. 查到3种方式. 1,网页搜索F12 network,找到mp3的文件,右键播放. 2,将歌曲缓存,在网易设置,c盘找到缓存文件,有uc文件和连同的个2文件,uc改为mp3,再用网易打开,收藏歌单,下载. . . . 但前两种方式然并ruan. 3, htt…

1051. 复数乘法 (15)

复数可以写成(A Bi)的常规形式&#xff0c;其中A是实部&#xff0c;B是虚部&#xff0c;i是虚数单位&#xff0c;满足i2 -1&#xff1b;也可以写成极坐标下的指数形式(R*e(Pi))&#xff0c;其中R是复数模&#xff0c;P是辐角&#xff0c;i是虚数单位&#xff0c;其等价于三角…

ios企业应用发布流程

转载自:http://blog.csdn.net/justinjing0612/article/details/8758692留作备忘 企业发布app的 过程比app store 发布的简单多了&#xff0c;没那么多的要求&#xff0c;哈 但是整个工程的要求还是一样&#xff0c;比如各种像素的icon啊 命名规范啊等等。 下面是具体的流程 1、…

Mdi和修改的基本逻辑

一个主窗体要有基本的菜单栏,工具栏,状态条,系统栏,右键菜单,鼠标提示… 1,主界面:MDI,IsMdiContianer true,所有窗口的入口,媒介.一个项目只可有一个父容器 Form1 f new Form(); f.MdiParent this;//在父容器显示 ShowDialog();//模态窗口,写在模态窗口之后 的代码 必须等待…

1059. C语言竞赛(20)

C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩&#xff0c;颁奖规则也就制定得很滑稽&#xff1a;0. 冠军将赢得一份“神秘大奖”&#xff08;比如很巨大的一本学生研究论文集……&#xff09;。1. 排名为素数的学生将赢得最好的奖品 —— 小黄人…

【Android Developers Training】 58. 缓存位图

注&#xff1a;本文翻译自Google官方的Android Developers Training文档&#xff0c;译者技术一般&#xff0c;由于喜爱安卓而产生了翻译的念头&#xff0c;纯属个人兴趣爱好。 原文链接&#xff1a;http://developer.android.com/training/displaying-bitmaps/cache-bitmap.ht…

树控件,多条件组合查询与混合数据源

//实现多条件查询 //...连接数据库的代码 SqlDataAdapter sda new SqlDataAdapter(sql,con); DataTable dt new DataTable(); sda.Fill(dt); CBO_CLS.DisPlayMember " "; CBO_CLS.ValueMember " "; //dt是内存中的数据表,对其进行表的操作 DataRow r …

前端学习(975):bootstrap轮播图

1引入js和css 2引入html 2运行结果

centos中文目录换成英文目录

http://http://xugang-1017-126-com.iteye.com/blog/2081845 如果安装了中文版的Cent OS之后&#xff0c;root目录和home目录下会出现中文的路径名&#xff0c;如“桌面”、“文档”、“图片”、“公共的”、“下载”、“音乐”、“视频”等目录&#xff0c;这样在命令行上操作…

linux3.0.4编译LDD中的scull全过程

按照惯例&#xff0c;我是应该先写一些本章的收获的&#xff0c;不过太晚了。 在看完第三章之后开始编译&#xff0c;错误一堆&#xff0c;几乎崩溃&#xff0c;幸亏经过不断的百度&#xff0c;总算解决了问题&#xff0c;我发现 我遇到问题比较多&#xff0c;算是集中七个龙珠…

用ado.net生成对应的sql语句

在不知道是增是删还是改还是查的情况下&#xff0c;用ado.net生成对应的sql语句。 对一张表批量操作。但前提条件是&#xff0c;对应一张表&#xff0c;主键&#xff0c;表的约束。//1.连接数据库SqlConnection con new SqlConnection(地址);//2.适配器(select语句,不是查数据…