![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
pat 乙类 python
qq_20662425
这个作者很懒,什么都没留下…
展开
-
pat 乙类 1095 python
注意一、要求输出类型为1的指令时,查询为空则输出NA。即if len(p) == 0:print("NA"),只用if find[1] not in level:print("NA")只能判断指令是否是"A"、"B"、"T",不能用来判断是否是空集,测试点1、2会报错。类型为2或3时,可以使用if find[1] not in room_num:print("NA")或if find[1] not in date:print("NA"),因为在分类时已经排除没有的情况。类型1也可以在开始建立空字典,排除没有原创 2021-09-27 11:24:25 · 122 阅读 · 0 评论 -
pat 乙类 1094 python
注意、k位连续数字有可能会取到1或0,需要排除import mathl,k = map(int,input().split())n = input()for i in range(l-k+1): p = n[i:i+k] q = int(p) if q == 1 or q == 0: continue j = int(math.sqrt(q)) for m in range(2,j+1): if q % m == 0:原创 2021-09-24 19:03:23 · 116 阅读 · 0 评论 -
pat 乙类 1093 python
a = input()b = input()char = a + bresult = ""for i in char: if i not in result: result += iprint(result)原创 2021-09-24 17:14:43 · 51 阅读 · 0 评论 -
pat 乙类 1092 python
有序输入使用列表储存,无序输入可以考虑字典储存n,m = map(int,input().split())result = [0 for i in range(n)] # 创建初始化为0的列表s = []for i in range(m): num = list(map(int,input().split())) for k in range(n): result[k] += num[k]max_result = max(result)print(ma原创 2021-09-24 14:14:51 · 92 阅读 · 0 评论 -
pat 乙类 1091 python
注意一、题目要求输出最小的自守数,顺序遍历即可,找到就跳出当前循环,查找下一待检数的自守数注意二、整型不能计算长度,不能将待检数转化为整型。需要计算待检数的长度,方便对结果切片,因此计算出的结果要转化为字符串注意三、需要了解for...else的使用m = int(input())num = input().split()for k in num: l = len(k) for n in range(10): s = str(n * int(k)**2)原创 2021-09-22 21:08:18 · 71 阅读 · 0 评论 -
pat 乙类 1088 python
注意一、题目只说明甲是正整数,乙是甲的反转也是正整数,但丙不一定是正整数注意二、有多个解,则以甲取最大值为准。因此倒序遍历即可,找到解直接退出程序,不需要比大小和排序注意三、首先输出的是甲的能力值(不是自己的能力值)m,x,y = map(int,input().split())result = []for a in range(99,9,-1): # 倒序遍历,最先查找a的最大解 b = int(str(a)[::-1]) c = abs(a-b) / x原创 2021-09-21 18:57:30 · 78 阅读 · 0 评论 -
pat 乙类 1087 python
set()函数是一个无序不重复的元素集,可以用来删除重复的元素。作为一个无序的集合,set()不记录元素位置或者插入点。因此,不能使用索引和切片, 或其它类序列的操作。使用set()函数,将列表转化为集合,可以减少一个条件语句的使用,缩短运行时间。n = int(input())num = []for i in range(n+1): m = int(i/2) + int(i/3) + int(i/5) num.append(m)num = set(num)print(原创 2021-09-21 16:22:08 · 99 阅读 · 0 评论 -
pat 乙类 1086 python
注意、要将输出转化为整型。如输入a=10,b=10,乘积c =100,反转后时001,输出不是001而是1。题目没说清楚a,b = map(int,input().split())c = a * bc = str(c)[::-1]print(int(c))有两个测试点错误。左侧不能是0开头a,b = map(int,input().split())c = a * bc = str(c)[::-1]print(c)...原创 2021-09-21 15:36:39 · 84 阅读 · 0 评论 -
pat 乙类 1085 python
将总分由小数转化为整数,需要一个遍历来完成,会导致测试点5超时。如果先将每项分数转化为整数再相加(不符合题意),会导致测试点5出错字符串方法lower()比遍历转化快如果使用列表来存储查找修改元素:1、嵌套列表只能使用遍历的方法来查找,很慢。2、使用index()方法来查找元素索引,很慢字典比列表查找修改更快,同一个key有多个数据需要存储,可以使value用列表或字符串来存储数据,如{key1:[a1,b1],key2:[a2,b2],...}有时可以通过,有时测试点5会超时(限时800m原创 2021-09-21 14:49:38 · 126 阅读 · 0 评论 -
pat 乙类 1084 python
本题和题1078(字符串压缩与解压 )中的压缩部分很像,但比那个简单题1078链接:pat 乙类 1078 pythond,n = input().split()for i in range(int(n)-1): d += "#" same = d[0] count = 1 res = "" for j in d[1:]: if j == same: count += 1 else:原创 2021-09-20 22:02:49 · 91 阅读 · 0 评论 -
pat 乙类 1083 python
如果差值不在字典中,就创建一个新的键值对;如果存在于字典中,就将相应的值加1。减少了一个遍历的使用n = int(input())num = list(map(int,input().split()))result = {}for i in range(n): diff = abs(num[i]-i-1) if diff in result: result[diff] += 1 # 差值在字典的键中,就将相应的值加1 else:原创 2021-09-20 20:47:10 · 106 阅读 · 0 评论 -
pat 乙类 1082 python
可以不用开方,直接用平方数之和来比较大小n = int(input())d_min = 20000d_max = 0for i in range(n): name,x,y = input().split() d = int(x)**2+int(y)**2 if d <= d_min: d_min = d name_min = name if d >= d_max: d_max = d na原创 2021-09-20 19:47:09 · 58 阅读 · 0 评论 -
pat 乙类 1081 python
设置两位标志符,p,q分别代表字符串中是否有数字或字母。if...elif...else语句,先判断是否满足if条件,满足if则不执行elif和else后的语句;不满足if,再判断是否满足elif条件,满足elif则不执行else后的语句;不满足elif则执行elsen = int(input())for i in range(n): p = 0 # 数字标志符 q = 0 # 字母标志符 num = input() if len(num) <原创 2021-09-20 17:34:38 · 77 阅读 · 0 评论 -
pat 乙类 1080 python
注意一、尽量少使用循环迭代来查找元素,python效率很低,容易超时。查找嵌套列表中子列表中的元素只能使用循环迭代来查找,所以也要减少嵌套列表的使用。多使用单层列表或字典,因为可以用 if x in list(dir)来快速查找元素注意二、字典是无序的,不能使用sort()方法或sorted()函数来排序,要转化为有序的列表来排序,需使用字典特有的items()方法。items() 方法以列表形式(并非直接的列表,若要返回列表值还需调用list函数)返回可遍历的(键, 值) 元组数组。items原创 2021-09-20 14:41:47 · 112 阅读 · 0 评论 -
pat 乙类 1079 python
注意、非回文数反转时,首数字有可能是0,输出字符串格式即可注意、对字符串遍历时,可以不用考虑字符串长度时偶数还是奇数,用字符串长度除以2取整即可得到遍历查找对比的次数n = input()for i in range(10): l = len(n) w = int(l/2) for k in range(w): if n[k] == n[l-1-k]: pass else: break原创 2021-09-19 21:26:08 · 100 阅读 · 0 评论 -
pat 乙类 1078 python
注意一、不要将字符串分割,空格也算有效输入字符,也要进行计数注意二、在压缩时,要使循环多进行一轮(方便将结果加入到结果中,这样程序更简单),在字符串末尾多加一个字符即可注意三、解码时,数字不一定是个位数(有可能大于9),需要把数字字符串拼接起来n = input()char = input()result = ""if n == "C": same = "" count = 0 char += "0" # 在字符串后面多加一个字符0原创 2021-09-19 17:44:45 · 109 阅读 · 0 评论 -
pat 乙类 1077 python
注意一、不要删除正在遍历列表中的元素,会造成遍历错误。多建空白列表,不要吝啬注意二、在四舍五入的情况下不要使用round()函数,5不一定会入位。用数与它的整型相减,大于等于0.5就入位n,m = map(int,input().split())grade = []for i in range(n): score = list(map(int,input().split())) legal = [] for k in score: if 0 <=原创 2021-09-18 20:05:25 · 77 阅读 · 0 评论 -
pat 乙类 1076 python
将选项放入列表中,对正确答案再列表中查找索引,索引值加1即为该位密码用字符串存储密码,方便输出n = int(input())char = ["A","B","C","D"]num = ""for i in range(n): answer = input().split() for k in answer: if k[2] == "T": num += str(char.index(k[0]) + 1)print(num)原创 2021-09-17 20:31:38 · 69 阅读 · 0 评论 -
pat 乙类 1074 python
使用字符串来做更简单注意一、如果循环完成后,整除后的商还不为0的话(有进位),需要将商也加入到列表中注意二、输入长度不等的话,需要将左边用0补齐注意三、进制表中0要变为10,要不然除数是0注意四、高位0不输出,检测到高位零需去掉。只有0时,不能去掉,跳过这步,直接输出(太复杂了)。直接将字符串转化为整型输出,高位零被去掉了注意五、需考虑两个0相加的情况(题目说明:输入非负的pat数),输出为0使用列表存储数据,优点、直接将输入全部转化为整型列表,计算时不需要再将字符串转化为整型原创 2021-09-16 21:00:00 · 125 阅读 · 0 评论 -
pat 乙类 1072 python
注意一、同一个学生可能携带多个相同的查缴物品注意二、查缴物品需按学生携带顺序输出,遍历学生物品n,m = map(int,input().split())items = input().split()q = 0p = 0for i in range(n): stu = input().split() s = "" for k in range(2,2+int(stu[1])): if stu[k] in items: s +=原创 2021-09-15 19:05:22 · 64 阅读 · 0 评论 -
pat 乙类 1071 python
T,K = map(int,input().split())for i in range(K): n1,b,t,n2 = map(int,input().split()) if t > T: print("Not enough tokens. Total = %d." % T) else: if (n1 > n2 and b == 0) or (n1 < n2 and b == 1): T += t...原创 2021-09-15 17:03:08 · 67 阅读 · 0 评论 -
pat 乙类 1070 python
因为先套上的绳子需要多次对折,要想使串成的绳子最长,需要将绳段的长度升序排列,使最长的绳段最后串上,这样最长的绳段对折次数最少n = int(input())cord = list(map(int,input().split()))cord.sort()length = cord[0]for i in cord[1:]: length = (length + i) / 2print(int(length))...原创 2021-09-15 16:38:58 · 70 阅读 · 0 评论 -
pat 乙类 1069 python
注意、如果处于当前中奖位置的网友已经中过奖,则跳过他顺次取下一位,后续中奖位置都以变动后的位置开始,每隔N个人开始发红包m,n,s = map(int,input().split())reward = []result = []for i in range(m): name = input() reward.append(name)for k in range(s-1,m): if (k+1 - s) % n == 0: if reward[k] not原创 2021-09-15 16:22:02 · 79 阅读 · 0 评论 -
pat 乙类 1068 python
测试点3 测试点5 容易错注意一、这个点是独一无二,只出现了1次,如果这个点出现2次及以上,直接跳过。count()方法不能对嵌套列表使用注意二、矩阵的边缘也要考虑,可以设置条件,如果是边缘就不对比。也可以给这个矩阵加个边框,值初始化为0;注意三、题目说颜色差充分大,需加上绝对值abscontinue语句和break语句的区别:continue语句是跳过本轮循环,执行下一轮循环break语句是直接跳出循环体正确,无超时。四号测试点1100ms(超过1400ms会被判为超时)m,原创 2021-09-15 14:55:11 · 114 阅读 · 0 评论 -
pat 乙类 1067 python
注意、输入错误达到系统允许错误时,无论有没有下一次输入,都输出账号锁定code,n = input().split()n = int(n)while 1: word = input() if word == "#": break else: if word == code: print("Welcome in") break else: print("Wr原创 2021-09-15 10:39:59 · 88 阅读 · 0 评论 -
pat 乙类 1066 python
if与elif的区别:如果是if...if的情况,无论满不满足第一个if语句,都会执行第二个if语句。如果是if...elif的情况,满足第一个if语句后,不会执行elif语句,elif语句可分解为else+if两个语句。m,n,a,b,z=map(int,input().split())value = []for i in range(m): row = input().split() for j in range(n): if b >= int(row[j原创 2021-09-14 17:16:48 · 64 阅读 · 0 评论 -
pat 乙类 1065 python
注意一、当落单人数为0时,输出0,后面没有换行和空格注意二、要使用set()函数,不然会超时。可能参加人数的ID有大量重复注意三、set()函数是一个集合,不能使用sort()方法,需转化成列表再使用注意四、不能在最后将set里的字符串转化为整型,不然有一个测试点会出错(不懂为什么)也不能一开始就将输入转化为整型,要不然会超时,转化为整型很耗时?set()函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集。相当与没有键,只有值的简化字典。n.原创 2021-09-14 16:07:42 · 90 阅读 · 0 评论 -
pat 乙类 1064 python
n = int(input())num = input().split()result = []for i in range(n): s = 0 for k in range(len(num[i])): s += int(num[i][k]) if s not in result: result.append(s)result.sort()print(len(result))print(*result,sep=' ')原创 2021-09-14 11:41:10 · 93 阅读 · 0 评论 -
pat 乙类 1063 python
import mathn = int(input())max_mod = 0for i in range(n): a,b = map(float,input().split()) mod = math.sqrt(a**2+b**2) if mod > max_mod: max_mod = modprint("%.2f"%round(max_mod,2))原创 2021-09-14 10:52:07 · 42 阅读 · 0 评论 -
pat 乙类 1061 python
n,m = map(int,input().split())score = list(map(int,input().split()))answer = input().split()for i in range(n): student = input().split() result = 0 for k in range(m): if student[k] == answer[k]: result += score[k] pr.原创 2021-09-14 10:35:04 · 71 阅读 · 0 评论 -
pat 乙类 1060 python
一、先降序排列,再查找E的值。序列号加1即为天数二、将天数与骑车距离相比较即可三、需考虑两种特殊情况,1、全部满足,2、全部不满足n = int(input())num = list(map(int,input().split()))num.sort(reverse=True)for i in range(n): if num[0] > i+1: if num[i] > i+1: if i == n-1:原创 2021-09-14 09:52:50 · 66 阅读 · 0 评论 -
pat 乙类 1058 python
注意一、使用lstrip()和rstrip()方法可以删除字符串左右两端指定的字符(默认空格)(返回还是字符串),再使用split()方法分割字符串(返回列表)注意二、使用循环迭代创建列表n,m = list(map(int,input().split()))opt_list = []score_list = [0 for i in range(n)]err = [0 for i in range(m)]for i in range(m): opt = input() op原创 2021-09-13 16:07:19 · 127 阅读 · 0 评论 -
pat 乙类 1057 python
n = input()num = 0count0 = count1 =0for i in n: if 122 >= ord(i) >= 97: num += ord(i) -96 elif 90 >= ord(i) >= 65: num += ord(i) - 64while num > 0: mod = num % 2 num //= 2 if mod == 0: count...原创 2021-09-13 14:11:27 · 34 阅读 · 0 评论 -
pat 乙类 1056 python
每个数都可以成为其他数的十位或个位,次数均等于数的个数减一。因此每个数乘以次数再乘以11,加起来等于总和n = list(map(int,input().split()))result = 0for i in n[1:]: result += i*(n[0]-1)*11print(result)双循环遍历查找,再相加n = list(map(int,input().split()))result = 0for i in range(1,n[0]+1): for j原创 2021-09-13 13:47:53 · 48 阅读 · 0 评论 -
pat 乙类 1055 python
一、题目要求身高相同时,按名字字母升序排列。先按名字字母升序排列,再按身高降序排列二、使用循环嵌套创建嵌套列表(矩阵),如果有多余的人,将多个0插入第一行三、用左右两个索引值,向嵌套列表中添加名字四、输入结果,每行最后一个名字后面没有空格n,k = map(int,input().split())students_list = []for i in range(n): name,height = input().split() students_list.append(原创 2021-09-13 10:55:17 · 98 阅读 · 0 评论 -
pat 乙类 1053 python
注意、看情况将输入转化为整型,还是浮点型。观察期k大于观察期阈值d,且超过一半的日子用电量低于低电量阈值e,为空置。n,e,d = map(float,input().split())maybe_empty = 0empty = 0for i in range(int(n)): m = list(map(float,input().split())) k = m[0] r = m[1:] p = 0 for j in r: if j <原创 2021-09-10 14:47:27 · 85 阅读 · 0 评论 -
pat 乙类 1050 python
注意、创建矩阵(嵌套列表),要使用循环迭代。不能使用[[0]*3]*4这种形式,每一行的存储地址都是相同的,修改任意一行中的元素都会导致其他行元素的改变1、先判断序列长度是否为素数,素数只能被自身和1整除,只输出一列(题目要求行大于等于列)2、如果是合数,需寻找两个尽可能一样大小的因数(题目要求行列之差尽可能小)。将序列长度开根号,根号周围的数有两个尽量相等的因数,遍历时需按开根号的序列长度逆序查找3、使用循环迭代创建嵌套列表,开根号后面的因数是行数,前面的是列数4、可将矩阵分为多轮循环填充原创 2021-09-09 17:04:19 · 107 阅读 · 0 评论 -
pat 乙类 1049 python
有两个测试点超时了n = int(input())num = list(map(float,input().split()))result = 0for i in range(n): s = p = 0 for k in range(i,n): s += num[k] p += s result += pprint("%.2f"%result)0.1在0.1的片段中出现了4次,0.2在0.1和0.2的片段中个出现了3次,0.3在0.1原创 2021-09-09 10:48:59 · 83 阅读 · 0 评论 -
pat 乙类 1048 python
注意一、如果A比B长,需用0将B左补齐,如果B比A长,需用0将A左补齐,要不然测试点2、5无法通过,题目没说清注意二、个位是第一位,从左端开始算起。A、B不一定一样长a,b = input().split()result = ""l1 = len(a)l2 = len(b)if l1 < l2: a = (l2-l1)*"0"+a l = l2elif l1 >= l2: b = (l1-l2)*"0"+b l = l1for i in ra原创 2021-09-09 10:09:18 · 76 阅读 · 0 评论 -
pat 乙类 1047 python
第二个测试点非零返回n = int(input())result_list = [0]*1000for i in range(n): m = input().split() num =int(m[0].split("-")[0]) score = int(m[1]) result_list[num] += scoremax_result = max(result_list)max_index = result_list.index(max_result)pri原创 2021-09-08 15:45:26 · 88 阅读 · 0 评论