PAT_B_1040_Java(25分)
直接找A,每个A前的P和后的T个数乘积,再加和,就是输出的数了
//意料之中的超时了三个测试点
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//输入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();long sum = 0;//记录PAT的个数for (int i = 0; i < str.length() - 1; i++) {//遍历整个字符串if (str.charAt(i) == 'A') {//找到A的所有下标sum += P(str, i) * T(str, i);//用每个A的PAT组合加和}continue;}System.out.println(sum % 1000000007);//由于结果可能比较大,只输出对 1000000007 取余数的结果}public static long P(String str, int a) {//计算下标a之前“P”的个数long P = 0;//记录P的个数for (int i = 0; i < a; i++) {if (str.charAt(i) == 'P') {P++;}continue;}return P;}public static long T(String str, int a) {//计算下标a之后“T”的个数long T = 0;//记录T的个数for (int i = str.length() - 1; i > a; i--) {if (str.charAt(i) == 'T') {T++;}continue;}return T;}}
继续修改:
//25分
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws IOException {//输入BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));String str = bf.readLine();int num_P = 0, num_T = 0;long sum = 0;//记录PAT的个数int a[] = new int[str.length()];for (int i = 0; i < str.length(); i++) {if (str.charAt(i) == 'P') {num_P++;} else if (str.charAt(i) == 'A') {a[i] = num_P;// 将当前A前面的P的个数保存}}for (int i = str.length() - 1; i >= 0; i--) {// 统计每个A后面T的个数if (str.charAt(i) == 'T') {num_T++;} else if (str.charAt(i) == 'A') {sum += a[i] * num_T;// 当前A前面的P的个数×当前A后面的T的个数}}System.out.println(sum % 1000000007);//由于结果可能比较大,只输出对 1000000007 取余数的结果}
}
相同思想-不同写法:
import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception{BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));char[] c = bf.readLine().toCharArray();bf.close();int pat=0,at=0,t=0;for(int i=c.length-1;i>=0;i--) {if(c[i]=='T')t++;else if(c[i]=='A')at=(t+at)%1000000007;else pat=(pat+at)%1000000007;}System.out.print(pat);}
}
PAT_B_1040_Java(25分)相关推荐
- 12门课100分直博清华!这份成绩单冲上热搜,但学霸小伙也曾考过25分
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 金磊 明敏 发自 凹非寺 量子位 报道 | 公众号 QbitAI 一 ...
- PTA 7-3 旅游规划 (25分)(双权值Dijkstra最短路)
7-3 旅游规划 (25分) 有了一张自驾旅游路线图,你会知道城市间的高速公路长度.以及该公路要收取的过路费.现在需要你写一个程序,帮助前来咨询的游客找一条出发地和目的地之间的最短路径.如果有若干条路 ...
- PTA 03-树1 树的同构 (25分)
题目地址 https://pta.patest.cn/pta/test/15/exam/4/question/711 5-3 树的同构 (25分) 给定两棵树T1和T2.如果T1可以通过若干次左右 ...
- 【PAT (Advanced Level) Practice】1051 Pop Sequence (25 分)
1051 Pop Sequence (25 分) Given a stack which can keep M numbers at most. Push N numbers in the order ...
- 【PAT (Advanced Level) Practice】1093 Count PAT‘s (25 分)
1093 Count PAT's (25 分) The string APPAPT contains two PAT's as substrings. The first one is formed ...
- 【PAT (Advanced Level) Practice】1149 Dangerous Goods Packaging (25 分)
1149 Dangerous Goods Packaging (25 分) When shipping goods with containers, we have to be careful not ...
- 7-29 修理牧场 (25 分)
7-29 修理牧场 (25 分) 农夫要修理牧场的一段栅栏,他测量了栅栏,发现需要N块木头,每块木头长度为整数L i 个长度单位,于是他购买了一条很长的.能锯成N块的木头,即该木头的长度是L ...
- 7-18 银行业务队列简单模拟 (25 分)
7-18 银行业务队列简单模拟 (25 分) 设某银行有A.B两个业务窗口,且处理业务的速度不一样,其中A窗口处理速度是B窗口的2倍 -- 即当A窗口每处理完2个顾客时,B窗口处理完1个顾客.给定到达 ...
- 5-35 城市间紧急救援 (25分) pat 数据结构
题目连接 https://pta.patest.cn/pta/test/15/exam/4/question/862 5-35 城市间紧急救援 (25分) 作为一个城市的应急救援队伍的负责人,你有 ...
最新文章
- HTTPS 也不安全?被发现新漏洞会暴露你的数据
- php base64处理
- SPOJ MULTQ3 7299 Multiples of 3 (区间更新)
- java程序在eclipse上运行和导出文件运行结果不同
- Windows server 2008文件服务器之二屏蔽影音文件以及指定文件名
- 这都2021年了,还不会Feign性能调优?Feign性能调优之gzip压缩实现-自娱自乐篇
- Python入门,从19个语法开始!
- latex中\left[\right]在多行公式中的问题
- eclipse怎么修改java的行高_eclipse皮肤怎么修改 eclipse皮肤修改教程
- jQuery数据与Attr?
- java netbeans教程_Netbeans下载安装教程教程
- 01,HelloWorld入门程序
- 手把手教你集成阿里云推送(app杀死仍可推送)
- 如何使用计算机求和公式,excel求和公式怎么用
- 彤云缥缈回金格,明月婵娟挂玉钩
- Edge浏览器或使用谷歌chrome内核的浏览器访问网页版高德地图很卡特别慢解决办法
- 风控模型基本概念和方法
- 量化投资学习——股票分红对期指的影响
- 计算机网络教程网线制作,图吧小白教程 篇二十六:手把手教你自制网线(夹网线水晶头)...
- 分类算法-决策树、随机森林
热门文章
- java实现分布式redis锁_使用redis实现分布式锁
- 项目接入实现复杂布局的vlayout
- 游戏服务器出现问题怎么维护权益,游戏服务器出问题怎么解决
- 软件测试python基础_软件测试学习教程——python基础
- python保存运行结果下次使用_将python运行结果保存至本地文件中的示例讲解
- android 自定义loading,android_自定义Loading框
- iphone中怎么强制view重绘
- 实现call和apply
- git拉取分支报错:fatal:‘XXX' is not a commit and a branch ‘XXX' cannot be created from
- 360获公安部“优秀技术支持单位”等七项荣誉