![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PAT乙级(主要C/C++实现,Python偶尔实现)
小光~
平庸之辈
展开
-
1095 解码PAT准考证 (25分)
1 题目2 思路本题考查字符串处理和结构体排序,关键点如下:采用vector存储结构体数据指令1和指令3的排序是一样的,可以复用指令3,采用unordered_map存储考场编号和总人数,并且可以避免超时。Tip:map底层采用的是红黑树,有序的,可以采用中序遍历从小到大遍历出来,但是运行时间长;unordered_map采用的是散列哈希,内存空间大,但是时间复杂度为O(1)思路参考柳婼的博客,特此感谢。3 代码#include <iostream>#include原创 2020-12-16 17:13:27 · 208 阅读 · 0 评论 -
1094 谷歌的招聘 (20分)
1 题目2 思路本题考查字符串处理和素数判断,素数记得对0和1进行处理。3 代码#include <iostream>#include <string>using namespace std;int isPrime(int num){ // 0,1和偶数情况 if(num == 1 || num % 2 == 0){ return false; } if(num == 2){ return true;原创 2020-12-16 17:04:31 · 183 阅读 · 0 评论 -
1093 字符串A+B (20分)
1 题目2 思路本题为字符串处理,本质是去重,将两个字符串合并后去重即可,这里去重采用的方法是数组标识位去重。3 代码#include <iostream>#include <string>using namespace std;int main(){ string a,b; int flag[150]; for(int i = 0;i < 150;i++){ flag[i] = 0; } getline原创 2020-12-16 17:01:28 · 250 阅读 · 0 评论 -
1092 最好吃的月饼 (20分)
1 题目2 思路本题采用一维数组,索引为种类,值进行累加计数即可3 代码#include <iostream>using namespace std;int main(){ int n,m; cin>> n >> m; int total[n]; // 初始化 for(int i = 0; i < n; i++){ total[i] = 0; } // 一维数组进行计数原创 2020-12-16 16:55:26 · 126 阅读 · 1 评论 -
1091 N-自守数 (15分)
1 题目2 思路本题为模拟题,按自守数的格式模拟即可,其中两个关键点:N为1-10,所以遍历即可取末尾子串,因为M不超过1000,所以通过整除即可取出;另一种思路,可以将数字先转为string,再通过substr取出3 代码#include<iostream>using namespace std;void check(int num){ int flag = false; for(int i = 1; i < 10; i++){ i原创 2020-12-16 16:50:11 · 207 阅读 · 0 评论 -
1049. 数列的片段和
一、题目给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这10个片段。给定正整数数列,求出全部片段包含的原创 2017-09-17 10:22:32 · 369 阅读 · 0 评论 -
1052. 卖个萌
一、题目萌萌哒表情符号通常由“手”、“眼”、“口”三个主要部分组成。简单起见,我们假设一个表情符号是按下列格式输出的:左手[右手] 现给出可选用的符号集合,请你按用户的要求输出表情。输入格式:输入首先在前三行顺序对应给出手、眼、口的可选符号集。每个符号括在一对方括号[]内。题目保证每个集合都至少有一个符号,并不超过10个符号;每个符号包含1到4个非空字符。之后一行给出一个正整数K,为用户请求的个数原创 2017-10-24 17:41:41 · 252 阅读 · 0 评论 -
1053. 住房空置率
一、题目在不打扰居民的前提下,统计住房空置率的一种方法是根据每户用电量的连续变化规律进行判断。判断方法如下:在观察期内,若存在超过一半的日子用电量低于某给定的阈值e,则该住房为“可能空置”; 若观察期超过某给定阈值D天,且满足上一个条件,则该住房为“空置”。 现给定某居民区的住户用电量数据,请你统计“可能空置”的比率和“空置”比率,即以上两种状态的住房占居民区住房总套数的百分比。输入格式:输入第原创 2017-10-24 17:42:56 · 203 阅读 · 0 评论 -
1054. 求平均值
一、题目本题的基本要求非常简单:给定N个实数,计算它们的平均值。但复杂的是有些输入数据可能是非法的。一个“合法”的输入是[-1000,1000]区间内的实数,并且最多精确到小数点后2位。当你计算平均值的时候,不能把那些非法的数据算在内。输入格式:输入第一行给出正整数N(<=100)。随后一行给出N个实数,数字间以一个空格分隔。输出格式:对每个非法输入,在一行中输出“ERROR: X is not a原创 2017-10-24 17:43:54 · 339 阅读 · 0 评论 -
1055. 集体照
一、题目拍集体照时队形很重要,这里对给定的N个人K排的队形设计排队规则如下:每排人数为N/K(向下取整),多出来的人全部站在最后一排; 后排所有人的个子都不比前排任何人矮; 每排中最高者站中间(中间位置为m/2+1,其中m为该排人数,除法向下取整); 每排其他人以中间人为轴,按身高非增序,先右后左交替入队站在中间人的两侧(例如5人身高为190、188、186、175、170,则队形为175、1原创 2017-10-24 17:45:01 · 341 阅读 · 0 评论 -
1056. 组合数的和
一、题目给定N个非0的个位数字,用其中任意2个数字都可以组合成1个2位的数字。要求所有可能组合出来的2位数字的和。例如给定2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。输入格式:输入在一行中先给出N(1二、个人理解C++:#include <iostream>using namespace std;int main(){ int num; ci原创 2017-10-24 17:45:56 · 433 阅读 · 0 评论 -
1057. 数零壹
一、题目给定一串长度不超过105的字符串,本题要求你将其中所有英文字母的序号(字母a-z对应序号1-26,不分大小写)相加,得到整数N,然后再分析一下N的二进制表示中有多少0、多少1。例如给定字符串“PAT (Basic)”,其字母序号之和为:16+1+20+2+1+19+9+3=71,而71的二进制是1000111,即有3个0、4个1。输入格式:输入在一行中给出长度不超过105、以回车结束的字符串原创 2017-10-24 17:46:51 · 223 阅读 · 0 评论 -
1058. 选择题
一、题目批改多选题是比较麻烦的事情,本题就请你写个程序帮助老师批改多选题,并且指出哪道题错的人最多。输入格式:输入在第一行给出两个正整数N(<=1000)和M(<=100),分别是学生人数和多选题的个数。随后M行,每行顺次给出一道题的满分值(不超过5的正整数)、选项个数(不少于2且不超过5的正整数)、正确选项个数(不超过选项个数的正整数)、所有正确选项。注意每题的选项从小写英文字母a开始顺次排列。各原创 2017-10-24 17:49:00 · 285 阅读 · 0 评论 -
1051. 复数乘法
一、题目复数可以写成(A + Bi)的常规形式,其中A是实部,B是虚部,i是虚数单位,满足i2 = -1;也可以写成极坐标下的指数形式(R*e(Pi)),其中R是复数模,P是辐角,i是虚数单位,其等价于三角形式 R(cos(P) + isin(P))。现给定两个复数的R和P,要求输出两数乘积的常规形式。输入格式:输入在一行中依次给出两个复数的R1, P1, R2, P2,数字间以空格分隔。输出格式:原创 2017-10-24 17:40:38 · 399 阅读 · 0 评论 -
1074. 宇宙无敌加法器
一、题目地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在PAT星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个PAT星人都必须熟记各位数字的进制表,例如“……0527”就表示最低位是7进制数、第2位是2进制数、第3位是5进制数、第4位是10进制数,等等。每一位的进制d或者是0(表示十进制)、或者是[2,9]区间内的整数。理论上这个进制表应该包含原创 2017-10-23 21:38:48 · 2286 阅读 · 3 评论 -
1003. 我要通过!
一、题目“答案正确”是自动判题系统给出的最令人欢喜的回复。本题属于PAT的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”,否则输出“答案错误”。得到“答案正确”的条件是:字符串中必须仅有P, A, T这三种字符,不可以包含其它字符;任意形如 xPATx 的字符串都可以获得“答案正确”,其中 x 或者是空字符串,或者是仅由字母 A 组成的字符串;如果 aPbTc原创 2017-06-19 01:27:20 · 554 阅读 · 0 评论 -
1012. 数字分类
一、题目给定一系列正整数,请按要求对数字进行分类,并输出以下5个数字:A1 = 能被5整除的数字中所有偶数的和; A2 = 将被5除后余1的数字按给出顺序进行交错求和,即计算n1-n2+n3-n4…; A3 = 被5除后余2的数字的个数; A4 = 被5除后余3的数字的平均数,精确到小数点后1位; A5 = 被5除后余4的数字中最大数字。 输入格式:每个输入包含1个测试用例。每个测试用例先原创 2017-07-11 15:52:11 · 285 阅读 · 0 评论 -
1016. 部分A+B
一、题目正整数A的“DA(为1位整数)部分”定义为由A中所有DA组成的新整数PA。例如:给定A = 3862767,DA = 6,则A的“6部分”PA是66,因为A中有2个6。现给定A、DA、B、DB,请编写程序计算PA + PB。输入格式:输入在一行中依次给出A、DA、B、DB,中间以空格分隔,其中0 < A, B < 1010。输出格式:在一行中输出PA + PB的值。输入样例1: 38627原创 2017-07-13 09:56:45 · 407 阅读 · 0 评论 -
1031. 查验身份证
一、题目一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:Z:0 1 2 3 4 5 6 7 8 9 10 M:1 0 X 9 8 7 6 5 4 3 2现在给定一些身原创 2017-09-16 10:27:17 · 338 阅读 · 0 评论 -
1050. 螺旋矩阵
一、题目给定一个正数数列,我们可以从中截取任意的连续的几个数,称为片段。例如,给定数列{0.1, 0.2, 0.3, 0.4},我们有(0.1) (0.1, 0.2) (0.1, 0.2, 0.3) (0.1, 0.2, 0.3, 0.4) (0.2) (0.2, 0.3) (0.2, 0.3, 0.4) (0.3) (0.3, 0.4) (0.4) 这10个片段。给定正整数数列,求出全部片段包含的原创 2017-09-17 10:22:44 · 245 阅读 · 0 评论 -
1071. 小赌怡情
一、题目常言道“小赌怡情”。这是一个很简单的小游戏:首先由计算机给出第一个整数;然后玩家下注赌第二个整数将会比第一个数大还是小;玩家下注t个筹码后,计算机给出第二个数。若玩家猜对了,则系统奖励玩家t个筹码;否则扣除玩家t个筹码。注意:玩家下注的筹码数不能超过自己帐户上拥有的筹码数。当玩家输光了全部筹码后,游戏就结束。输入格式:输入在第一行给出2个正整数T和K(<=100),分别是系统在初始状态下赠送原创 2017-10-23 21:35:10 · 353 阅读 · 0 评论 -
1072. 开学寄语
一、题目下图是上海某校的新学期开学寄语:天将降大任于斯人也,必先删其微博,卸其QQ,封其电脑,夺其手机,收其ipad,断其wifi,使其百无聊赖,然后,净面、理发、整衣,然后思过、读书、锻炼、明智、开悟、精进。而后必成大器也!本题要求你写个程序帮助这所学校的老师检查所有学生的物品,以助其成大器。输入格式:输入第一行给出两个正整数N(<= 1000)和M(<= 6),分别是学生人数和需要被查缴的物品种原创 2017-10-23 21:36:53 · 609 阅读 · 0 评论 -
1059. C语言竞赛
一、题目C语言竞赛是浙江大学计算机学院主持的一个欢乐的竞赛。既然竞赛主旨是为了好玩,颁奖规则也就制定得很滑稽:冠军将赢得一份“神秘大奖”(比如很巨大的一本学生研究论文集……)。排名为素数的学生将赢得最好的奖品 —— 小黄人玩偶!其他人将得到巧克力。给定比赛的最终排名以及一系列参赛者的ID,你要给出这些参赛者应该获得的奖品。输入格式:输入第一行给出一个正整数N(<=10000),是参赛者人数。原创 2017-10-24 17:50:01 · 275 阅读 · 0 评论 -
1060. 爱丁顿数
一、题目英国天文学家爱丁顿很喜欢骑车。据说他为了炫耀自己的骑车功力,还定义了一个“爱丁顿数”E,即满足有E天骑车超过E英里的最大整数E。据说爱丁顿自己的E等于87。现给定某人N天的骑车距离,请你算出对应的爱丁顿数E(<=N)。输入格式:输入第一行给出一个正整数N(<=105),即连续骑车的天数;第二行给出N个非负整数,代表每天的骑车距离。输出格式:在一行中给出N天的爱丁顿数。输入样例: 10 6原创 2017-10-24 17:50:54 · 271 阅读 · 0 评论 -
1075. 链表元素分类
一、题目给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为 18→7→-4→0→5→-6→10→11→-2,K为10,则输出应该为 -4→-6→-2→7→0→5→10→18→11。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出:第1个结点的地址;结原创 2017-10-23 21:39:36 · 324 阅读 · 0 评论 -
1065. 单身狗(25)
一、题目“单身狗”是中文对于单身人士的一种爱称。本题请你从上万人的大型派对中找出落单的客人,以便给予特殊关爱。输入格式:输入第一行给出一个正整数N(<=50000),是已知夫妻/伴侣的对数;随后N行,每行给出一对夫妻/伴侣——为方便起见,每人对应一个ID号,为5位数字(从00000到99999),ID间以空格分隔;之后给出一个正整数M(<=10000),为参加派对的总人数;随后一行给出这M位客人的I原创 2018-01-18 14:58:49 · 253 阅读 · 0 评论 -
1066. 图像过滤(15)
一、题目图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数M和N(0 < M, N <= 500),另外是待过滤的灰度值区间端点A和B(0 <= A < B <= 255)、以及指定的替换灰度值。随后M行,每行给出N个像素点的灰度值,其间以原创 2017-12-28 22:32:24 · 366 阅读 · 0 评论 -
1070. 结绳(25)
一、题目二、个人理解Tips: C++:#include <iostream>#include <cstdlib>using namespace std;int cmp(const void *a, const void *b){ return *(int *)a - *(int *)b;}int main(){ int n; cin >> n; in原创 2017-12-28 22:29:43 · 290 阅读 · 0 评论 -
1069. 微博转发抽奖(20)
一、题目小明PAT考了满分,高兴之余决定发起微博转发抽奖活动,从转发的网友中按顺序每隔N个人就发出一个红包。请你编写程序帮助他确定中奖名单。输入格式:输入第一行给出三个正整数M(<= 1000)、N和S,分别是转发的总量、小明决定的中奖间隔、以及第一位中奖者的序号(编号从1开始)。随后M行,顺序给出转发微博的网友的昵称(不超过20个字符、不包含空格回车的非空字符串)。注意:可能有人转发多次,但不能中原创 2017-12-28 22:27:46 · 291 阅读 · 0 评论 -
1068. 万绿丛中一点红(20)
一、题目 输入样例1: 8 6 200 0 0 0 0 0 0 0 0 65280 65280 65280 16711479 65280 65280 65280 65280 16711479 65280 65280 65280 16711680 65280原创 2017-12-28 22:26:53 · 237 阅读 · 0 评论 -
1067. 试密码(20)
一、题目图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。输入格式:输入在第一行给出一幅图像的分辨率,即两个正整数M和N(0 < M, N <= 500),另外是待过滤的灰度值区间端点A和B(0 <= A < B <= 255)、以及指定的替换灰度值。随后M行,每行给出N个像素点的灰度值,其间以原创 2017-12-27 21:34:44 · 185 阅读 · 0 评论 -
1064. 朋友数(20)
一、题目二、个人理解Tips:本题实质就是在考怎么求各位数字和另外证号一定小于40,所以可以采用数组保存C++:#include <iostream>using namespace std;int main(){ int n; cin >> n; int result[40]; for (int i = 0; i < 40; i++) {原创 2017-12-27 21:31:27 · 269 阅读 · 0 评论 -
1063. 计算谱半径(20)
一、题目二、个人理解Tips:sqrt()函数将max的比较放入输入中C++:#include <iostream>#include <cstdio>#include <cmath>using namespace std;int main(){ int n; cin >> n; double max = 0; for (int i = 0; i < n原创 2017-12-27 21:22:58 · 289 阅读 · 0 评论 -
1062. 最简分数(20)
一、题目二、个人理解Tips:给的两个分数不知道谁大谁小题目说的是之间,所以不包括边界C++:#include <iostream>#include <stdio.h>using namespace std;//最大公约数int gcd(int a, int b){ if (b == 0) { return a; } return gcd(b,原创 2017-12-27 21:20:19 · 302 阅读 · 0 评论 -
1061. 判断题(15)
一、题目判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。输入格式:输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量。第二行给出M个不超过5的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0代表“非”,1代表“是”。随后N行,每行给出一个学生的解答。数字间均以空格分隔。输出格式:按照输入的顺序输出每个学生的得分,每个分数占一行。原创 2017-12-27 21:05:53 · 357 阅读 · 0 评论 -
1079. 延迟的回文数 (20)
一、题目 输入格式:输入在一行中给出一个不超过1000位的正整数。输出格式:对给定的整数,一行一行输出其变出回文数的过程。每行格式如下A + B = C 其中A是原始的数字,B是A的逆转数,C是它们的和。A从输入的整数开始。重复操作直到C在10步以内变成回文数,这时在一行中输出“C is a palindromic number.”;或者如果10步都没能得到回文数,最后就在一行中输出“Not f原创 2017-12-27 20:44:27 · 608 阅读 · 0 评论 -
1078. 字符串压缩与解压 (20)
一、题目文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。解压方法就是反过来,把形如 5c 这样的表示恢复为 ccccc。本题需要你根据压缩或解压的要求,对给定字符串进行处理。这里我们简单地假设原始字符串是完全由英文字母和原创 2017-12-27 20:35:59 · 316 阅读 · 0 评论 -
1077. 互评成绩计算 (20)
一、题目在浙大的计算机专业课中,经常有互评分组报告这个环节。一个组上台介绍自己的工作,其他组在台下为其表现评分。最后这个组的互评成绩是这样计算的:所有其他组的评分中,去掉一个最高分和一个最低分,剩下的分数取平均分记为 G1;老师给这个组的评分记为 G2。该组得分为 (G1+G2)/2,最后结果四舍五入后保留整数分。本题就要求你写个程序帮助老师计算每个组的互评成绩。输入格式:输入第一行给出两个正整数N原创 2017-12-27 20:27:04 · 531 阅读 · 0 评论 -
1076. Wifi密码 (15)
一、题目下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用wifi,又怕耽误亲们的学习,现将wifi密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。谢谢合作!!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成wifi的密码。这里简单假设每道选择题都有4个选项,有且只有1个正确答案原创 2017-12-27 20:17:58 · 1516 阅读 · 0 评论 -
1080. MOOC期终成绩 (25)
一、题目输入样例: 6 6 7 01234 880 a1903 199 ydjh2 200 wehu8 300 dx86w 220 missing 400 ydhfu77 99 wehu8 55 ydjh2 98 dx86w 88 a1903 86 01234 39 ydhfu77 88 a1903 66 01234 58 wehu8 84 ydjh2 82 m原创 2017-12-27 20:46:54 · 830 阅读 · 0 评论