PTA准备
曾小白不想写SQL
这个作者很懒,什么都没留下…
展开
-
PTA 1050 螺旋矩阵(详解+代码)
啊,二刷才借鉴别人的代码,耐心的研究,我的思路是这样的:1.先求出m、n,其实也就是根号N可以得出公约数之一,如果N对这个公约数取余!=0,那么说明不是整除的,所以我们再n–,就可以得出比m小的n了,n已知,m=N/n;2.将给的数字存到数组,然后升序,方便后面的降序。3.创建一个二维数组,他的俩个下标进行对应的操作,用switch来判断方向,0是向右,1是向下,2是向左,3是向上。pu...原创 2020-05-02 16:38:28 · 359 阅读 · 0 评论 -
PTA 1025 反转链表(详解+代码)
解析:这道题我的思路是先将这些节点按给的头结点地址开始排序,也就是1 2 3 4 5 6这6个节点。然后倒序前四个存在一个新的集合里,同时删除旧集合的前四个节点,然后新集合再添加一遍旧集合全部,这个整个方法外面还有一层循环就是0—K=N/K,因为总数可能是K的倍数,一遍倒序可能不够。最后我们再倒序一遍新集合,因为新集合的最后一个节点的next肯定是-1,所以倒序方便,将最后一个节点的addres...原创 2020-04-21 09:40:50 · 429 阅读 · 1 评论 -
Pta 1015 德才论(详解+代码)
这道题是二刷的时候解决的,其实还是心浮气躁,看别人的代码会烦,这次耐心的看了下去。这道题是分类排序,大致的思路就是,我们要给它分成四个部分,然后逐个进行分类排序,自己自定义一个排序器,有个接口就是专门写LIST的排序(Comparator<>),该接口用于对象与对象间的比较,返回值意味着这两对象之间的大小关系。-1代表前者小,0代表两者相等,1代表前者大。排序后将四个部分再放入一个集...原创 2020-04-19 15:46:49 · 525 阅读 · 0 评论 -
Pta 1074 宇宙无敌加法器(详解+代码)
最近不知道怎么了,做题不如之前顺利了,以前前三道都很快的,现在2、3题都会卡很久,,,,。解析:1.我是先将两个PTA数补零,方便遍历N的时候就一起遍历2.遍历N,如果这个进制表有0,就让这个数为103.进位我们可以单独存一个变量v,v=(pta1+pta2+v)/n,因为小除大,返回的也是0,大除小是取整,正好符合进制要求4.我们的进制后的数是(pta1+pta2+v)%n,被余数小的话...原创 2020-03-29 19:45:11 · 417 阅读 · 0 评论 -
PTA 1058 选择题(详解+代码)
注意:有用的信息只有正确答案 和学生的答案 分值1.将题目的分值保存在一个数组中 ,将题目正确的选项保存在一个数组中,题目号放一个数组:索引号+1为题目号2.学生的答案去和正确答案比较,相等就是成绩+=arr[i] 如果错了 就是题目号i++这道题我是卡在了对学生答案的转换,常用的方法都不行,不知道怎么拆,一时间难住了,后来看了下别人的思路,其实就是用俩个变量作为“()”的下标,然后去遍历...原创 2020-03-12 09:04:26 · 409 阅读 · 0 评论 -
PTA 1051 复数乘法(详解+代码)
解析:A+Bi=RcosP+R*isinPa+bi 和 c+di加法:(a+c) + (b+d)i减法:(a-c) + (b-d)i乘法:(ac-bd) + (bc+ad)i除法:(ac+bd)/(cc+dd) + (bc+ad)/(cc+dd)i这题我就懵了,复数已经忘光了,没想到居然会考到,在这里复习一下,还需要注意的一个点就是输出之前要判断一下,a和b是否小于...原创 2020-02-23 12:11:02 · 527 阅读 · 0 评论 -
PTA 1045 快速排序 一直AC不了
大佬们帮忙一起看看。咱们JAVA太吃亏了,我这是和C语言AC的代码差不多的思路。public class Pta_1045 { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedReader(new InputStreamReader(S...原创 2020-02-19 12:42:55 · 162 阅读 · 0 评论 -
PTA 1044 火星数字(详解+代码)
解析:1.判断输入的是数字还是火星文2.数字如果长度>13那么就是有高位 否则低位,要注意13的倍数低位都是0,因为13进13.火星文要判断是都是带高位的,也就是是否长度>3的public class Pta_1044 { //0-12的火星文 public static String[] s1 = new String[]{"tret", "jan", "f...原创 2020-02-19 11:05:28 · 631 阅读 · 0 评论 -
PTA 1039 到底买不买(详解+代码)
解析:这道题我的思路也是看了下别人之后理解的,首先遍历一遍总的手串,存到int数组里,因为最大也就是Z,所以下标最多也没超过150,然后开始遍历一遍需要的手串字符,将字符转换成下标,判断该下边的int数组是否>0,也就是是否存储过,如果有就将该下标–,因为后面还要判断,有重复的情况,如果没有,就将判断缺少次数的变量++。public class Pta_1039 { public ...原创 2020-02-16 19:46:27 · 225 阅读 · 0 评论 -
PTA 1037 在霍格沃茨找零钱(详解+代码)
解析:这道题我的思路就是换算成总的大小来进行比较,这样是最简便的,我是全部换成了K了比较,这是最方便的,换成G也行。比较大小主要就是上一个负号,之后的输出就是我们吧获得的K总/(1729)这其实就是取整,整数为G,小数就是S、K,然后K总%(1729)/29这是获得了小数位也就是S、K之后除2得到S。最后的K直接对K总29取余就好了。这其实就是用到了JAVA INT型都是舍去小数位的。publi...原创 2020-02-16 15:55:36 · 461 阅读 · 0 评论 -
PTA 1033 旧键盘打字(详解+代码)
心累,没有AC,又是超时。解析:1.‘+’坏了,应输入的大写的字符串设为空。换成char数组去比较’A’<=CHAR[I]<=‘Z’ 那么 char[i]=’’;2.坏字符串转换成小写拼接大写。3.应输入字符调用replace(),遍历坏键,作为参数。4.如果字符串全为坏,则输出空,也就是String为空public class Pta_1033 { pub...原创 2020-02-12 18:01:32 · 269 阅读 · 0 评论 -
PTA 1032 挖掘机技术哪家强 (详解+代码)
!!!PTA对咱们JAVA真的是太不友好了!!!!总是超时,同样的代码,C跑的贼拉快!!!!解析:创建一个数组n+1(因为有0);对应学校编号,设MAX比较索引号下标数组 += 成绩,取得max.每次取得就存入nax,同时id更新。这个代码还是ac不了。。。。。超时public class Pta_1032 { public static void main(String[] arg...原创 2020-02-12 15:59:52 · 256 阅读 · 0 评论 -
PTA 1031 查验身份证(详解加代码)
终于!让我缓和了下,前阵子做题有点小崩溃,思路跟不上。今天这个就让我舒服一点。解析:7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}存入数组 遍历字符串相乘=sum sum+=sum z=sum%11m存入数组 索引z取值 比较字符串最后一位public class Pta_1031 { static int[] qz = {7, 9, 10, 5, 8, ...原创 2020-02-11 18:31:46 · 490 阅读 · 0 评论 -
PTA 1029坏键盘(详解+代码)
解析:就是遍历一遍正常输入的字符,与显示的字符比较。题目要求是大写,我们就在一开始输入的时候就调用toUpperCase()。去重,只需要比较我们存储结果的字符串是否包含就行。我第一次做超时了,我想太多,还把结果存到集合里,以后不能这样,要怎么方便怎么来,能不用集合不用集合。public class Pta_1029 { public static void main(String[] ...原创 2020-02-10 21:41:38 · 272 阅读 · 0 评论 -
PTA 1028 人口普查(详解+代码)
一直ac不过去,一直超时。解析:第一张图是用原生API,将字符串转换成日期比较,但是很慢,超时严重,但是写出来很快,省去很多逻辑,如果AC不了或者时间不够的情况下,我是愿意写第一个的。第二个代码是自己写的,速度快了很多,但是还是没AC。不合理的情况<1814年9月6日||>2014年9月6日year month dayif ( year=1814if month=9&...原创 2020-02-08 18:48:32 · 864 阅读 · 0 评论 -
PTA 1023 组个最小数(详解+代码)
解析:这道题我最开始读题有问题,后来重新做,耐心没了,借鉴了别人的转天才重新做好。思路是这样的,我们将数据存入数组A,新建一个0-9的数组B,遍历一遍1-9的数组A,索引位上不为零就输出一遍数组B对应索引的数,然后数组A索引位减减,这是输出1-9的数,首位不能为0所以我们要再处理,因为我么数组B就是按照升序,所以我们首字母可以在数组A第二索引数遍历一遍后输出,知道A的0索引位为0。public...原创 2020-02-02 16:03:15 · 774 阅读 · 0 评论 -
PTA 1022 D进制的A+B (详解+代码)
解析:这道题思路就是大数的运算还有进制间的转换。大数就是BigInteger,进制间的转换用Integer.toString()方法。public class Pta_1022 { public static void main(String[] args) throws IOException { BufferedReader buf = new BufferedRe...原创 2020-02-02 15:17:09 · 267 阅读 · 0 评论 -
PTA 1021 个位数统计(详解+代码)
解析:这道题我的思路就是把这个输入数遍历进一个数组,数组的索引作为D,索引上的数字为M。public class Pta_1021 { public static void main(String[] args) throws IOException { BufferedReader buf=new BufferedReader(new InputStreamReade...原创 2020-02-01 17:01:39 · 475 阅读 · 0 评论 -
PTA 1019 数字黑洞 (详解+代码)
解析:这道题不难,可我做起来麻烦,因为经常要转换变量类型,就很头疼,这方面我不是很熟练。思路是这样的,获取输入的数,存为字符型,然后遍历一遍存进数组里,数组的升降序排序大家应该都会把,这样就简单了,然后排序后的数组分别存进俩个变量,方便计算我们要把数组转成int型,这就需要我们会点正则表达式,我就是死记,"\\[|\\]|,|\\s"替换成""。然后这俩个数组的差作为判断进行while处理。还有...原创 2020-02-01 10:14:30 · 599 阅读 · 0 评论 -
PTA 1018 锤子剪刀布(详解+代码) AC
解析:读完题,我想下这些情况都只能一个一个写,这道题主要问题还是超时,如果用Scanner是绝对超时的,建议能用IO流用IO流,真的快!我们用IO流读取了甲和乙的出拳,进行比较,分为甲赢和乙赢俩种大情况,再细分出的什么,创建一个数组用来存石头剪刀布的次数,题目说是相等按字母顺序输出,所以我们创建的数组就是BCJ这样的顺序。后面靠最大数量的索引来输出胜利最多的手势方便。注意注意注意!不要用字符串...原创 2020-01-31 19:08:48 · 681 阅读 · 0 评论 -
PTA 1017 A除以B(详解+代码)
解析:大数的加减运算不同于普通整数的加减乘除运算,要用BigInteger;3 加—— a+b: a=a.add(b);4 减—— a-b: a=a.subtract(b);5 乘—— a*b: a=a.multiply(b);6 除—— a/b: a=a.divide(b);7 求余—a%b: a=a.mod(b);8 转换—a=b: b=BigInteger.valueOf(a)...原创 2020-01-30 19:32:36 · 753 阅读 · 0 评论 -
PTA 1016 部分A+B(详解+代码)
解析:题很简单,就是遍历一遍字符串去比较DA,有的话num++,记录次数,最后循环num遍,拼接DA。大致思路就是这样。public class Pta_1016 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String A = s...原创 2020-01-30 19:00:21 · 360 阅读 · 0 评论 -
PTA 1014 福尔摩斯的约会(详解+代码)
解析:这道题先用字符串数组来存储输入的字符串,然后遍历数组中单个字符串里的字符比较下一个字符串的字符,根据题目进行处理。知识点比较陌生的就是格式化输出,System.out.printf("%02d",ch-‘0’);代表占俩位System.out.printf("%02d\n",y); 代表占俩位换行System.out.printf("%.1f",y);保留一位小数点public ...原创 2020-01-30 12:43:15 · 578 阅读 · 0 评论 -
PTA 1013 数素数 (详解+代码)
解析:这道题我的思路就是素数遍历一遍存到集合中,在从M-N的顺序遍历一遍存着素数的集合。整体不难,难点在需要遍历进集合的素数该有多少,题目给的是N>=10的4次方,这是素数集合里的索引,所以我们要遍历进集合的suzhhu素数就应该更多,不然会有测试点4过不去。我也是尝试很多次才确定这个值,有点坑。public class Pta_1013 { public static void...原创 2020-01-29 16:54:27 · 404 阅读 · 0 评论 -
PTA 1012 数字分类 (详解+代码)
解析:这道题我觉得麻烦在替换成N。思路是这样的,如果满足条件就执行num++,代表该语句执行过,也就是值存在。其他就是switch语句搞定了。public class Pta_1012 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); ...原创 2020-01-28 21:49:31 · 410 阅读 · 0 评论 -
PTA 1011 A+B 和 C (详解+代码)
给定区间 内的 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。输入格式:输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。输出格式:对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1...原创 2020-01-28 13:05:30 · 458 阅读 · 0 评论 -
PTA 1010 一元多项式求导(详解+代码)
输入格式:以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过 1000 的整数)。数字间以空格分隔。输出格式:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。注意“零多项式”的指数和系数都是 0,但是表示为 0 0。输入样例:3 4 -5 2 6 1 -2 0输出样例:12 3 -10 1 6 0详解:这道题入手就踩了好多坑,想问...原创 2020-01-27 19:13:08 · 652 阅读 · 0 评论 -
PTA 1009 说反话 (详解+代码)
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。输入格式:测试输入包含一个测试用例,在一行内给出总长度不超过 80 的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用 1 个空格分开,输入保证句子末尾没有多余的空格。输出格式:每个测试用例的输出占一行,输出倒序后的句子。输入样例:Hello World Here I Com...原创 2020-01-27 13:43:35 · 516 阅读 · 0 评论 -
PTA 1008 数组元素循环右移问题(详解——代码)
解析:这道题一拿到手,就理解错了,有坑点, M = M % num;// 这句话很重要,可以修正M>N的情况,因为序列移动N位后还是原序列,没有这句话会有两个例子不过。思路就是先计算出溢出的个数,再输出5,6的下标,然后再计算左移却没溢出的个数,在输出1234的下标。public class Pta_1008 { public static void main(String[] ...原创 2020-01-26 18:34:48 · 525 阅读 · 0 评论 -
PTA 1007 素数对猜想(详解+代码)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020012611204943.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQxOTM1ODg1,size_16,color_FFFFFF,t...原创 2020-01-26 11:21:25 · 420 阅读 · 0 评论 -
PTA_1006换个格式输出整数(详解+ 代码)
让我们用字母 B 来表示“百”、字母 S 表示“十”,用 12…n 来表示不为零的个位数字 n(<10),换个格式来输出任一个不超过 3 位的正整数。例如 234 应该被输出为 BBSSS1234,因为它有 2 个“百”、3 个“十”、以及个位的 4。输入格式:每个测试输入包含 1 个测试用例,给出正整数 n(<1000)。输出格式:每个测试用例的输出占一行,用规定的格式输出 ...原创 2020-01-23 11:12:59 · 335 阅读 · 0 评论 -
PTA 1005 继续(3n+1)猜想 (详解加代码)
卡拉兹(Callatz)猜想已经在1001中给出了描述。在这个题目里,情况稍微有些复杂。当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数。例如对 n=3 进行验证的时候,我们需要计算 3、5、8、4、2、1,则当我们对 n=5、8、4、2 进行验证的时候,就可以直接判定卡拉兹猜想的真伪,而不需要重复计算,因为这 4 个数已经在验证3的时候遇到过了,我们称 5、8、...原创 2020-01-22 11:19:11 · 478 阅读 · 4 评论 -
1004成绩排名(详解+代码)
读入 n(>0)名学生的姓名、学号、成绩,分别输出成绩最高和成绩最低学生的姓名和学号。输入格式:每个测试输入包含 1 个测试用例,格式为第 1 行:正整数 n第 2 行:第 1 个学生的姓名 学号 成绩第 3 行:第 2 个学生的姓名 学号 成绩… … …第 n+1 行:第 n 个学生的姓名 学号 成绩其中姓名和学号均为不超过 10 个字符的字符串,成绩为 0 到 100 之...原创 2020-01-20 13:41:36 · 461 阅读 · 0 评论 -
PTA1003(详解加代码)
答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有 P、 A、 T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc ...原创 2020-01-19 17:14:26 · 853 阅读 · 2 评论 -
PAT1002
读入一个正整数 n,计算其各位数字之和,用汉语拼音写出和的每一位数字。输入格式:每个测试输入包含 1 个测试用例,即给出自然数 n 的值。这里保证 n 小于 10的100次方输出格式:在一行内输出 n 的各位数字之和的每一位,拼音数字间有 1 空格,但一行中最后一个拼音数字后没有空格。输入样例:1234567890987654321123456789输出样例:yi san wu分...原创 2020-01-18 21:11:27 · 138 阅读 · 0 评论