[code] PTA 胡凡算法笔记 DAY055 文章目录题目 A1047 Student List for Course小结题目 A1047 Student List for Course题意输入学生人数和课程数。输入学生名字,选择课程数和各选择课程编号。输出每门课程选课的学生数。课程编号从小到大输出,学生名字按字母序输出。思路根据需要输出的内容很明显可以看出这里映射课程号是key,学生姓名是value。而且因为同一个学生会...
[code] PTA 胡凡算法笔记 DAY054 文章目录题目 A1039 Course List for Student小结题目 A1039 Course List for Student题意输入学生人数和课程数。之后输入课程编号及选课人数及所有学生姓名。最后输入所有学生姓名进行查询选课情况。输出格式为:学生姓名 课程数 各课程编号(递增顺序输出)思路开始很暴力直接用的map做映射,结果最后有一个case爆了。看解析之后采用...
[code] PTA 胡凡算法笔记 DAY053 文章目录题目 A1024 Palindromic Number小结题目 A1024 Palindromic Number题意输入数N和最大操作次数K,按如下规则进行操作:n += reverse(n),当n为回文数字或者操作次数到达K后,输出最后的数和操作次数。思路因为数据范围超过了long long的范围所以需要设置大整数结构,然后就是大整数的加法操作和判断回文的操作,数字反...
[code] PTA 胡凡算法笔记 DAY052 文章目录题目 A1023 Have Fun with Numbers小结题目 A1023 Have Fun with Numbers题意输入一个数,判断两倍后的数字是否含有和原来数相同的数字及个数。输出Yes or No及两倍后的结果。思路构建大整数结构体字符串输入,转换为大整数类型*2函数实现,这里我主要通过首数字>=5时会lenth + 1判断是否两个数所...
[code] PTA 胡凡算法笔记 DAY051 文章目录题目B1017 A除以B小结题目B1017 A除以B题意输入被除数(最长1000位)与除数(1位),输出商和余数。思路基本就是按照我们手算的流程进行的,落一位小了再落一位这样。不过这里因为我开始设置余数是0,然后首位不会商0,所以后续多处理了几步,一个是在处理过程中如果出现商0的情况需要单独处理,再就是结果商就是0的情况,需要单独处理。另外一种方法就是,不够就商0,之...
[code] PTA 胡凡算法笔记 DAY050 文章目录题目 A1059 Prime Factors小结题目 A1059 Prime Factors题意输入n,输出其所有素因子,通过n= p1 ^ k1 * p2 ^ k2 * ....形式。其中pn为质因子,kn为该质因子出现次数,只有kn>1时才输出。思路核心点:构造素数表减轻时间复杂度;边计算边输出无需存储结果。需要考虑一下异常,n = 1的情况以及当质因子大于我...
[code] PTA 胡凡算法笔记 DAY049 文章目录题目 A1096 Consecutive Factors小结题目 A1096 Consecutive Factors题意输入数字N,求一段连续的整数序列,其乘积为N的因子。求最长的连续序列,输出长度及序列。如果存在多个序列长度相同的情况,输出最小的序列。思路首先需要确定思路,是采用构造连续整数乘积判断是否能被n整除的方式。然后确定范围,最大为sqrt(n)。然后再就是存...
[code] PTA 胡凡算法笔记 DAY048 文章目录题目 A1078 Hashing小结题目 A1078 Hashing题意输入hashtable的大小msize和数字序列的大小n,采用hash(key) = key % msize的hash策略和二次正向探测策略解决碰撞问题。将msize改为>=msize的最小素数,输出数字序列中每个数字在hashtable中的下标,从0开始,如果无法存储输出-。思路首先遍历求&...
[code] PTA 胡凡算法笔记 DAY047 文章目录题目 A1015 Reversible Primes小结题目 A1015 Reversible Primes题意输入数字N,D,如果数字N是素数并且按进制D反转后的数字也是素数,则输出Yes,否则输出No。当输入N为负数时,停止操作。思路首先肯定是要写一个判断是否为素数的函数,然后就是将数字按给定的进制进行反转然后求出其在10进制下的和。在进行进制转换时,很自然的求出来...
[code] PTA 胡凡算法笔记 DAY046 文章目录题目 B1013 数素数小结题目 B1013 数素数题意输入m,n,输出第m个素数到第 n个素数之间所有的素数(包含两端)。思路为了不要每次输出的时候去判断要输出哪个数,先利用初始化函数,初始化好第m到第n个素数的值,然后写好判断素数的函数和控制输出格式即可。Code in C++#include <cstdio>#include <cm...
[code] PTA 胡凡算法笔记 DAY045 文章目录题目 B1007 素数对猜想小结题目 B1007 素数对猜想题意给出一个数字n,在不超过这个范围内数相邻两个素数之间间隔为2的个数并输出。思路主要就是写一下判断素数的函数,然后在遍历范围的时候为了保证尽量少的判断是否为素数,使判断数为奇数(偶数除2外一定不是素数),然后遍历数数即可。Code in C++#include <cstdio>#in...
[code] PTA 胡凡算法笔记 DAY044 文章目录题目 A1088 Rational Arithmetic小结题目 A1088 Rational Arithmetic题意输入两个分数,输出进行加减乘除的结果,需要输出最简的方式(带分数或整数或真分数)。除法分母为0时,输出Inf。思路数据用结构体的方式存储,主要是对数据的化简和输出真分数函数的书写。然后这里还需要注意一下除法分母为0时需要单独处理。然后设计四则运算函数的...
[code] PTA 胡凡算法笔记 DAY043 文章目录题目 A1081 Rational Sum小结题目 A1081 Rational Sum题意输入n个分数,计算它们的和,输出化简后的形式,即带分数或整数或真分数。思路数据的存储方式采用结构体,每次输入的时候就将两个分数进行暴力加和之后化简。化简需要用到求最大公约数,并且需要将分母上的负数移到分子上。然后在最后输出的时候需要注意格式(是否会输出多余的空格)。注意:以下示...
[code] PTA 胡凡算法笔记 DAY042 文章目录题目 B1008 数组元素循环右移问题小结题目 B1008 数组元素循环右移问题题意输入n个数即需要循环右移的次数m,采用最少的移动次数,输出最后移动后的结果。思路因为循环右移后只要移动一位(排除不需要移动的情况外)所有数都不在自己原来的位置上了,所以最少的次数至少是移动n次。这里采用的方式就是从需要开始移动的位置开始,把数放在临时变量中,不断用移动后的数字填充。有可能...
[code] PTA 胡凡算法笔记 DAY041 文章目录题目 A1049 Counting Ones小结题目 A1049 Counting Ones题意给出一个数n,计算1~n过程中所有数字包含1的总个数。思路这一题暴力会超时,所以需要想想数学规律。最好想到的一个思路就是根据数字的位数去分,因为位数每增加一位不但包含低一位的所有情况还会有个倍数的情况。所以就可以扫描n的每一位来进行分类,主要分类就是当前位为==0, ==1,...
[code] PTA 胡凡算法笔记 DAY040 文章目录题目 A1008 Elevator小结题目 A1008 Elevator题意输入电梯需要达到的层数序列,电梯上行需要6s,下行4s,每层需要停5s,计算总共需要花费的时长并输出。思路这一题没有要求计算最小的时长,所以就是按照输入的序列根据上行还是下行处理就好,需要注意的是达到楼层之后都需要停5s即可。Code in C++#include <cstdi...
[code] PTA 胡凡算法笔记 DAY039 文章目录题目 B1049 数列的片段和小结题目 B1049 数列的片段和题意输入数字序列,求出可以截出的所有片段的数字和。思路主要就是找出每个数字出现的次数规律即可,这里第i个数字出现的次数为i*(n+1-i)。通过举例子的方式去分析其中的规律(像解数学题一样)。Code in C++#include <cstdio>const int MAXN =...
[code] PTA 胡凡算法笔记 DAY038 文章目录题目 B1019 数字黑洞小结题目 B1019 数字黑洞题意输入一个4位整数,不断执行以下规则直到为0或者为数字黑洞6174为止。对于整数n,先将n中各数字非递增排序后得到减数,然后递增排序得到被减数,两者相减。输出执行过程。思路很明显涉及到数字的排序,所以需要将整数进行拆分为整型数组,所以主要完成整型到数组的转换,以及数组到整型的转换即可。注意:当输入为6174...
[code] PTA 胡凡算法笔记 DAY037 文章目录题意 B1003 我要通过!小结题意 B1003 我要通过!题意看输入字符串是否满足如下规则,满足则输出YES,不满足输出NO。只包含P,A,T形如xPATx,其中x表示0个或多个A如果aPbTc满足,则aPbATca满足,其中a, b, c表示0个或多个A思路根据规则分析,输入的字符串只能包含P,A,T并且P和T只能包含一个。然后根据规则2 + 规则3可以演...
[code] PTA胡凡算法笔记 DAY036 文章目录题目 A1101 Quick Sort小结题目 A1101 Quick Sort题意输入序列,找到满足pivot性质的数(左边的数都小于它,右边的数都大于它),输出其个数及按从小到大顺序输出具体的数字。思路暴力会超时,所以我们需要从O(n^2)的时间复杂度往下降。根据给出的性质我们可以发现,在遍历的时候如果我们知道在这个点左边的最大值和右边的最大值就可以判断是否为piv...