![](https://img-blog.csdnimg.cn/20191129114039389.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
PAT甲级题解
本专栏将持续更新,记录我刷题的一点一滴,感谢关注!如果对代码思路有疑问,欢迎加我的QQ:1123020105,一起探讨。
sosalt8
这个作者很懒,什么都没留下…
展开
-
PAT甲级 1063 Set Similarity (25分)
1063 Set Similarity (25分)题目链接:PAT A 1063题目大意:输入第一行给出一个数n,代表集合的个数,随后n行每行给出一个集合的元素个数,以及集合中的数字。然后给出k次查询,要求求出指定两个集合的相同元素率nc/nt*100%,其中nc是指两个集合共有的不同元素的个数(说白了就是在去重之后求交集),nt是指两个集合总的不同元素的个数(说白了就是在去重之后求并集),...原创 2020-03-29 17:59:47 · 139 阅读 · 0 评论 -
PAT甲级 1062 Talent and Virtue (25分)
1062 Talent and Virtue (25分)题目链接:PAT A 1062题目大意:输入第一行给出考生总数,合格分数线以及优秀分数线。接下来每行给出考生的id,品德分数,才能分数。首先考生的品德分数和才能分数必须都大于等于合格分数线才能参与排名(划重点),之后考生分为几档,第一档是圣人,要求考生品德分数和才能分数都大于等于优秀分数线;第二档是君子,要求考生品德分数大于等于优秀分...原创 2020-03-29 13:36:31 · 161 阅读 · 0 评论 -
PAT甲级 1061 Dating (20分)
1061 Dating (20分)题目链接:PAT A 1061题目大意:给出四个字符串,要求在前两个字符串中确定DAY和HH,在后两个字符串中确定MM。其中DAY是指前两个字符串中第一次出现相同大写字母的位置上的字母,这个字母将确定是星期几,如样例:3 4 8 5 d j D k x h 4 h h G E2 9 8 4 a k D f ...原创 2020-03-29 11:28:08 · 135 阅读 · 0 评论 -
PAT甲级 1060 Are They Equal (25分)
1060 Are They Equal (25分)题目链接:PAT A 1060题目大意:给出一个数字n,代表需要保留的有效数字位数,要求判断两个数在这个有效数字位数下是否相等(所有数字都要转换成题目中要求的标准形式),注意保留位数直接保留即可,不需要进行四舍五入。思路分析:较复杂的一道题,主要是需要考虑的条件比较多,要求我们考虑的比较全面,否则就会出错。首先题目中给出的数字是非负的浮点数...原创 2020-03-27 15:26:33 · 120 阅读 · 0 评论 -
PAT甲级 1059 Prime Factors (25分)
1059 Prime Factors (25分)题目链接:PAT A 1059题目大意:给出一个数n,范围在long int之内,要求输出它的质因子分解形式。思路分析:对于任意一个数字n,它的质因子要么全部小于等于根号n,要么只有一个质因子大于根号n而其余质因子全部小于根号n,可以以此为思路进行求解。先求出100010以内的素数并把它们存放到数组中(int类型开根号大概是2的16次方,这个...原创 2020-03-26 20:25:44 · 144 阅读 · 0 评论 -
PAT甲级 1058 A+B in Hogwarts (20分)
1058 A+B in Hogwarts (20分)题目链接:PAT A 1058题目大意:29个knut可以换1个sickle,17个sickle可以换一个galleon,现在给出两个值都是用galleon.sickle.knut的形式表示且都是按照标准形式输入的,即galleon取值范围[0,10的7次幂],sickle取值[0,17),knut取值[0,29)。要求出这两个值的和并且按...原创 2020-03-26 11:46:44 · 131 阅读 · 0 评论 -
PAT甲级 1056 Mice and Rice (25分)
1056 Mice and Rice (25分)题目链接:PAT A 1056题目大意:输入第一行给出两个数np和ng,分别代表老鼠总数和每组老鼠的个数,第二行给出每只老鼠(索引从0到np-1)的重量,第三行给出初始时老鼠的分组序号。规则是从每组中选出最重的一只老鼠晋级比赛,这样有几组,就会有几只老鼠晋级,其余老鼠的排名就是组数加一,要求输出最后每只老鼠的排名。如果像样例那样,有11只老鼠,...原创 2020-03-19 23:52:19 · 153 阅读 · 0 评论 -
PAT甲级 1055 The World's Richest (25分)
1055 The World’s Richest (25分)题目大意:输入第一行给出两个数n和k,分别代表人的总数和查询总数。随后n行给出一些人的名字,年龄,财富值。最后给出k次查询,每次查询给出一个数m以及年龄最小值和最大值,其中m是最大输出数(最大值100,即满足要求的可能有成千上万人,但是我们只输出100人)。要求我们输出在这个年龄区间内的m人,输出规则是按财富值降序输出,如果财富值相...原创 2020-03-19 20:10:55 · 131 阅读 · 0 评论 -
PAT甲级 1054 The Dominant Color (20分)
1054 The Dominant Color (20分)题目链接:PAT A 1054题目大意:简单说就是题目中会给出m*n个数,要找出这些数中出现频率最多的一个并输出。思路分析:直接使用STL中的map统计每个数出现的频率,同时用max记录出现频率最大值。最后遍历map,当某个值与max相等时,输出键即可~AC代码:#include<iostream>#include...原创 2020-03-15 22:01:26 · 99 阅读 · 0 评论 -
PAT甲级 1053 Path of Equal Weight (30分)
1053 Path of Equal Weight (30分)题目链接:PAT A 1053题目大意:输入第一行给出三个数n,m,s,分别代表树的结点个数,非叶结点个数,以及重量。接下来一行给出每个结点的的重量,接下来m行给出每个非叶结点的子结点。题目要求我们找出所有从根结点出发到叶结点的路径中,有哪些重量之和等于s。要求找出它们并按照序列递减的顺序输出。思路分析:对于一棵树,我们通常用...原创 2020-03-15 21:36:39 · 136 阅读 · 0 评论 -
PAT甲级 1052 Linked List Sorting (25分)
1052 Linked List Sorting (25分)题目链接:PAT A 1052题目大意:这道题要求对给定的每个链表组成结构(即节点)按照key值从小到大排序,输出排序后链表的节点个数,头结点,以及链表中的每个结构。思路分析:PAT里的链表题地址基本都是由五六位的数字构成,非常清晰直观,因此我们可以使用静态链表来解决。所谓静态链表,就是结构体里的next变量不再是指针类型,而是整...原创 2020-03-15 14:47:26 · 122 阅读 · 0 评论 -
PAT甲级 1051 Pop Sequence (25分)
1051 Pop Sequence (25分)题目链接:PAT A 1051题目大意:输入第一行给出三个数m,n,k分别代表栈能存储的最大元素个数,从栈里取出元素的个数,需要判断的组数,然后k行,每行n个数。题目设定按照从1到n的顺序向栈里插入元素,k行中的数据代表从栈中取出元素的顺序,要求判定这些取出序列是否能成立。比如1 2 3 4 5 6 7就成立,因为这代表插入1,取出1,插入2,取...原创 2020-03-14 21:35:27 · 159 阅读 · 0 评论 -
PAT甲级 1050 String Subtraction (20分)
1050 String Subtraction (20分)题目链接:PAT A 1050题目大意:给出两个字符串s1和s2,要求在s1字符串中去掉s2字符串中出现过的所有字符并输出。思路分析:这道题很基础,直接用string结合map解决就可以。遍历一遍s2字符串,用map记录其中出现过的字符,然后遍历s1字符串,如果某个字符map值为0,说明没有在s2中出现过,直接输出,否则不输出。注...原创 2020-02-28 17:22:56 · 111 阅读 · 0 评论 -
PAT甲级 1049 Counting Ones (30分)
1049 Counting Ones (30分)题目链接:PAT A 1049这一道题,实际上是数学规律题,我一开始是没有想出怎么做的,参考了晴神和磊神书中的解法才掌握了这道题的解法,这里直接给出书中的解法,以供参考(网上应该是没有比这个更详细更简洁易懂的解法了):参考代码:#include<iostream>using namespace std;int mai...原创 2020-02-28 16:48:08 · 89 阅读 · 0 评论 -
PAT甲级 1048 Find Coins (25分)
1048 Find Coins (25分)题目链接:PAT A 1048题目大意:输入第一行给出两个数n和m,n代表硬币的数量,m代表我们要找的和。然后输入n个硬币的值(注意都是正数),需要找出两个硬币v1和v2,使得这两个硬币的值恰好等于m(v1<=v2),并输出(输出时v1在前面)。如果有多组这样的硬币,输出v1最小的那一组,如果找不到和恰好的等于m的两个硬币,输出No Solut...原创 2020-02-28 15:01:38 · 151 阅读 · 0 评论 -
PAT甲级 1047 Student List for Course (25分)
1047 Student List for Course (25分)题目链接:PAT A 1047题目大意:输入第一行给出两个数n和k,分别代表学生人数和课程总数,接下来n行,每行给出一个学生姓名(由三个大写字母和一个数字组成)和他所选的课程数以及课程编号(编号从1到k)。要求输出所有课程的选课人数以及学生姓名,并且学生姓名是按照字母序升序的规则进行输出的。思路分析:与甲级1039题类似...原创 2020-02-27 22:14:41 · 149 阅读 · 0 评论 -
PAT甲级 1046 Shortest Distance (20分)
1046 Shortest Distance (20分)题目链接:PAT A 1046题目大意:输入第一行先给出一个数n,然后给出n个数,代表第i个点到第i+1个点之间的距离。从样例来看,5代表有5个数,后面的1就代表第一个点到第二个点之间的距离是1。这些点形成一个圆,所以最后一个数9代表第5个点到第一个点之间的距离是9。接下来每一行任意给出两个数,要求求出两个数之间的最短距离(顺时针路径和...原创 2020-02-27 16:14:31 · 148 阅读 · 0 评论 -
PAT甲级 1044 Shopping in Mars (25分)
1044 Shopping in Mars (25分)题目链接:PAT A 1044题目大意:输入第一行给出两个数n和k,接下来给出n个正数,要求找出序列中所有和等于k的连续片段。如果不存在这样的片段,则输出数的和大于k的最小值的连续片段(例如样例2中连续片段的和大于k的第一个值是16)。如果有多个这样的连续片段,要按照左面下标递增的顺序输出。思路分析:有难度的一道题,注意到题中序列的和...原创 2020-02-23 22:06:16 · 110 阅读 · 0 评论 -
PAT甲级 1043 Is It a Binary Search Tree (25分)
1043 Is It a Binary Search Tree (25分)题目链接:PAT A 1043题目大意:输入第一行给出一个数n,然后给出n个数,要求按照输入的顺序构造一颗二叉搜索树,并判断输入的序列是不是这棵二叉搜索树的前序遍历或者这棵二叉搜索树镜像的前序遍历(二叉搜索树的镜像是将每个根节点的左右子树交换)。如果是,要求输出YES以及二叉搜索树或其镜像的后续遍历,如果不是,输出N...原创 2020-02-22 23:52:47 · 115 阅读 · 0 评论 -
PAT甲级 1042 Shuffling Machine (20分)
1042 Shuffling Machine (20分)题目链接:PAT A 1042题目大意:有54张扑克牌,初始时排列顺序分别是S1…S13…H1…H13…C1…C13…D1…D13…J1 J2,现在给出一个重复洗牌次数k,然后给出54个数字,每个位置i上都放置了一个数字,初始时S1…J2在位置1,2…54上。对于每次洗牌,将位置i上的牌移动到位置i放置的数字所代表的位置上。例如有3张牌...原创 2020-02-22 16:22:27 · 155 阅读 · 0 评论 -
PAT甲级 1041 Be Unique (20分)
1041 Be Unique (20分)题目链接:PAT A 1041题目大意:给出一个数n,然后给出n个数,要求输出这些数里第一个无重复的数,如果不存在这样的数,则输出None。思路分析:超级简单的一道题,直接用map解决即可。把每个数作为map的键,每输入一个数,键对应的值加一,最后从数组中第一个数开始遍历,输出第一个map值为1的元素,并且直接return 0。如果程序到了for循环...原创 2020-02-18 21:21:55 · 113 阅读 · 0 评论 -
PAT甲级 1039 Course List for Student (25分)
1039 Course List for Student (25分)题目链接:PAT A 1039题目大意:输入第一行给出两个数n和k,分别代表需要查询的学生人数和一共有多少门课(课程编号从1到k)。之后对于每一门课,给出选课人数和选课的学生姓名。最后一行给出n个学生的姓名,要求根据姓名查找这个学生选了哪些课,输出选课门数和课程编号。思路分析:一开始以为是非常简单的一道STL容器题,即应...原创 2020-02-17 21:57:32 · 205 阅读 · 0 评论 -
PAT甲级 1038 Recover the Smallest Number (30分)
1038 Recover the Smallest Number (30分)题目链接:PAT A 1038题目大意:给出一个数n,随后给出n个不超过8位的数字,问如何将这些数字组合成一个最小的数,要求输出这个最小数。注意如果生成的数是类似000325这种,那么输出时应舍去最前面的所有0,输出325。思路分析:从样例里就可以看出来,组合似乎跟字符串的字典序有很大关系,但是仅根据字典序又是不对...原创 2020-02-16 16:48:25 · 213 阅读 · 0 评论 -
PAT甲级 1037 Magic Coupon (25分)
1037 Magic Coupon (25分)题目链接:PAT A 1037题目大意:输入第一行和第三行给出两个数代表第二行和第四行集合中数的个数,第二行和第四行给出两个集合,两个集合中的数有正有负,两个集合中的数两两相乘,要求找出乘积的和最大值。思路分析:这是一道贪心算法题,不过难度比较低。我们可以定义四个数组,分别存储第一个集合的正数,第一个集合的负数,第二个集合的正数,第二个集合的负...原创 2020-02-16 15:05:10 · 102 阅读 · 0 评论 -
PAT甲级 1036 Boys vs Girls (25分)
1036 Boys vs Girls (25分)题目链接:PAT A 1036题目大意:输入第一行给出一个正整数n,随后n行每行给出男孩(M)或者女孩(F)的姓名,性别,id以及年级。要求找出最高年级的女孩和最低年级的男孩并输出,并且还要输出他们的年级差值。如果有哪个性别是不存在的,在对应位置要输出Absent(女孩是第一行,男孩是第二行),并且在第三行输出NA。思路分析:非常简单的一道...原创 2020-02-13 17:00:12 · 199 阅读 · 0 评论 -
PAT甲级 1035 Password (20分)
1035 Password (20分)题目链接:PAT A 1035题目大意:输入第一行给出一个正整数n,随后n行每行给出用户名和密码(均为不含空格的字符串)。要求统计含有1,0,l,O的字符串的个数,并且将1替换成@,将0替换成%,将l替换成L,将O替换成o。如果没有能够替换的,则输出题目要求输出的句子(如果n等于1,句子中的are应该改为is)。思路分析:非常简单的一道题,只需要建立...原创 2020-02-13 10:16:25 · 103 阅读 · 0 评论 -
PAT甲级 1034 Head of a Gang (30分)
1034 Head of a Gang (30分)题目链接:PAT A 1034题目大意:输入第一行给出两个数n和k,分别代表通话记录的条数以及阈值。随后n行给出两个人的通话记录。犯罪团伙被定义为多于两个人的通话时长加起来超过了阈值k,而犯罪团伙的头目被定义为团队中通话时间最长的那个人。题目要求找出每一个犯罪团伙的头目以及团队成员的个数。思路分析:有难度的一道题。首先和我们之前做的图的题...原创 2020-02-12 22:08:10 · 121 阅读 · 0 评论 -
PAT甲级 1033 To Fill or Not to Fill (25分)
1033 To Fill or Not to Fill (25分)题目链接:PAT A 1033题目大意:输入第一行给出四个数,分别是油箱最大容量,杭州到目的地的距离,每单位的油能让汽车跑多远以及加油站的数目。默认初始时汽车的油箱是空的,在任意加油站可以加任意数目的油(不能超过汽车油箱最大容量),要求输出从杭州到目的地所需要油价最少的钱数,如果无法到达目的地,则输出能够行驶的最大距离。思...原创 2020-02-11 16:03:14 · 162 阅读 · 0 评论 -
PAT甲级 1032 Sharing (25分)
1032 Sharing (25分)题目链接:PAT A 1032题目大意:输入第一行给出两条链表的首地址和结点总个数,接下来给出链表的连接方式,要求求出两条链表首个共用结点的地址。如果不存在这样的结点,那么输出-1。思路分析:PAT里的链表题地址基本都是由五六位的数字构成,非常清晰直观,因此我们可以使用静态链表来解决。所谓静态链表,就是结构体里的next变量不再是指针类型,而是整型变量...原创 2020-02-09 22:39:43 · 146 阅读 · 0 评论 -
PAT甲级 1031 Hello World for U (20分)
1031 Hello World for U (20分)题目链接:PAT A 1031题目大意:给出一个字符串,要求打印为U型输出。思路分析:一般图形打印题都是数学找规律题。最左面一列从上到下字符数为n1,下面一行从左到右字符数为n2,最右面一列从上到下字符数为n3。由于最下面一行最左面的字符和最左面一列最下面字符冲突,最下面一行最右面的字符和最右面一列最下面字符冲突,所以总字符数是n1+...原创 2020-02-09 00:20:18 · 120 阅读 · 0 评论 -
PAT甲级 1030 Travel Plan (30分)
1030 Travel Plan (30分)题目链接:PAT A 1030题目大意:题目第一行输入给出顶点数,边数,起点和终点,随后几行给出每条边的距离和通过每条边的开销,要求输出最短路径所经过的点以及这条路径的总距离以及总开销。如果有多条同样距离的路径,则输出花销最少的那条路径~思路分析:很简单的一道dijkstra算法模板题,只要熟练掌握dijkstra算法就可以解出。有两种解法,一种...原创 2020-02-08 20:41:48 · 364 阅读 · 0 评论 -
PAT甲级 1029 Median (25分)
1029 Median (25分)题目链接:PAT A 1029题目大意:给出两个升序的序列,要求输出将他们合并后序列的中位数。思路分析:由于只需要输出合并序列的中位数,所以其实没必要将两个序列合并到一起。可以采用一种算法思想:two pointers。即定义两个变量i和j,分别从两个序列的开始扫描这两个序列,如果a[i]<b[j],就让i自增,否则让j自增,当到达中位数的下标时退出...原创 2020-02-07 15:37:58 · 136 阅读 · 0 评论 -
PAT甲级 1028 List Sorting (25分)
1028 List Sorting (25分)题目链接:PAT A 1028题目大意:题目输入一个数n为学生个数,对于每个学生,给出他们的id,名字以及成绩。输入一个c代表行数,即我们需要排序的行数。如果c为1,则按照id升序排列,如果c为2,则按照名字字母序升序排列,如果名字相同,按照id升序排列,如果c为3,按照成绩升序排列,如果成绩相同,按照id升序排列。思路分析:很简单的排序题,...原创 2020-02-06 23:20:03 · 107 阅读 · 0 评论 -
PAT甲级 1027 Colors in Mars (20分)
1027 Colors in Mars (20分)题目链接:PAT A 1027题目大意:给出三个十进制数,都是在[0-168]范围内,要求将他们转化为13进制后按顺序输出。思路分析:非常简单的一道题,由于数的范围是[0-168],所以甚至都不需要会进制转化的编程解法,只需要找规律就行:转化为13进制数肯定是一个两位数(因为168 < 13的平方),即x = a13的一次方 + b1...原创 2020-02-06 20:27:51 · 115 阅读 · 0 评论 -
PAT甲级 1025 PAT Ranking (25分)
1025 PAT Ranking (25分)题目链接:PAT A 1025题目大意:给出每个考场的所有考生号以及考生成绩,要求将他们归并到一起排序后输出,同时还要输出考生所在的考场号(编号由1到n)以及考生在那个考场的排名,如果考生成绩相同,则按考生号升序输出~思路分析:在排序题中算是非常简单的了,只是根据成绩和考生号排序,简单直观。而考场编号和考生在考场的排名则存储到map容器里,一个...原创 2020-02-06 19:40:44 · 82 阅读 · 0 评论 -
PAT甲级 1024 Palindromic Number (25分)
1024 Palindromic Number (25分)题目链接:PAT A 1024原创 2020-02-05 23:40:45 · 128 阅读 · 0 评论 -
PAT甲级 1023 Have Fun with Numbers (20分)
1023 Have Fun with Numbers (20分)题目链接:PAT A 1023 题目大意:给出一个不超过20位的整数n,要求将这个数乘以2,然后于原始数作比较看看是否有新增的数字,有则输出Yes,没有则输出No。还要输出乘以2后的数。思路分析:由于最大的数可能有20位,所以不能定义一般的整型变量int,long long int也不能解决问题,所以涉及到大整数运算的知识点。...原创 2020-02-05 16:17:01 · 216 阅读 · 0 评论 -
PAT甲级 1022 Digital Library (30分)
1022 Digital Library (30分)题目链接:PAT A 1022题目大意:有一数字图书馆,对于每一本书给出如下信息:书的id,书的名字,书的作者,书的关键字,书的出版社以及书的出版年份。要求根据输入的查找信息输出相应书的ID(7位数字)。思路分析:这道题题意很直观,但是需要用到的知识点比较多。首先根据题目要求可以分析出这道题一定是使用STL中的map去解决,而且由于题...原创 2020-02-04 21:49:00 · 144 阅读 · 0 评论 -
PAT甲级 1021 Deepest Root (25分)
1021 Deepest Root (25分)题目链接:PAT A 1021题目大意:给出一个数n代表节点的个数(节点编号1-n),给出各个边的连接方式,问哪个节点为根节点时,这棵树最高,如果有多个这样的结点,则按升序的方式输出。如果给出的图不是一棵树,那么输出它有几个部分组成。思路分析:注意题中输入第一行是节点数目,接下来的n-1行是边。由于连通,节点数为n,边为n-1的图一定是一棵树...原创 2020-02-03 21:24:34 · 190 阅读 · 0 评论 -
PAT甲级 1020 Tree Traversals (25分)
1020 Tree Traversals (25分)题目链接:PAT A 1020题目大意:给出一棵树的后序遍历和中序遍历,要求求出该树的层序遍历。思路分析:根据后序遍历和中序遍历可以构建出唯一的一颗二叉树,用到了递归的求解方法。对于每一棵树,后序遍历的最后一个元素就是该树的根节点,然后在中序遍历中找到这个元素,记录对应的下标,左面的元素就是这棵树的左子树,右面的树就是这棵树的右子树,然后...原创 2020-02-02 22:17:49 · 105 阅读 · 0 评论