【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)蓝桥杯 pythonB 组 2022 年省赛真题复盘总结

 【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)大家好,我是爱分享的小蓝,欢迎大家来对答案~ 【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

全文目录

?混奖感言

⭐试题 A: 排列字母

 ?思路点拨

?代码详解  

⭐试题 B: 寻找整数

 ?思路点拨

?代码详解  

⭐试题 C: 纸张尺寸

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 D: 数位排序

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 E: 蜂巢

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 F: 消除游戏

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 G: 全排列的价值

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 H: 技能升级

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 I: 最长不下降子序列

?传送锚点

 ?思路点拨

?代码详解  

⭐试题 J: 最优清零方案

?传送锚点

 ?思路点拨

?代码详解  

?考后寄语


?混奖感言

首先感谢关注我的小伙伴们!你们都太棒啦!小蓝为你们感到骄傲!\(@^0^@)/

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

嘿嘿,小蓝第一次参加,混了个省二?

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

心路过程

哇塞!看到自己的名字在获奖名单里,直接从座位上蹦起来,开心地做了10个开合跳 \ ^o^ /

心想:我的300块终于可以回来了,300块报名费没有打水漂,嘿嘿~美滋滋~ ✪ ω ✪

但仔细一算成绩,自己占总人数的12%,还差2%就能变省一,可能就差那2分···啊咧 (っ °Д °;)っ

认清现实,不能去国赛和小伙伴见面了,手里的鸡腿瞬间不香了···大脑空白ing o_o ….

痛定思痛,必须反思!刨根问底,找出原因!问自己5个why???

分析原因

为什么没得省一?因为分数低。

为啥分数低?因为题目做不出来。

为啥题目做不出来?因为考试太紧张了,大脑一片空白。

为啥考试会紧张?因为准备不充足,担心考不好。

为啥准备不充足?因为学习没有规划,学习效率太低,考试过于焦虑。

找到自身的3个原因后,那我接下来该怎么做?

解决方案

1、制定计划:考前一个月制定详细的刷题计划。(滴答清单)

2、高效刷题:高效率专注认真的刷题。(番茄钟,柳比歇夫时间管理法)

3、心理平衡:保持内心情绪的稳定平和。(轻音乐)


⭐试题 A: 排列字母

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

第一题打卡题,就挺简单滴~

python基础语法:字符串排序sorted() + 字符串连接“”.join()

?代码详解  

#试题A:排列字母 s="WHERETHEREISAWILLTHEREISAWAY" print("".join(sorted(s))) #AAAEEEEEEHHHIIILLRRRSSTTWWWY ''' 样例测试1: s="LANQIAO" print(sorted(s)) print("".join(sorted(s))) ['A', 'A', 'I', 'L', 'N', 'O', 'Q'] AAILNOQ 样例测试2: s="GOODGOODSTUDYDAYDAYUP" print("".join(sorted(s))) AADDDDDGGOOOOPSTUUYYY ''' 

⭐试题 B: 寻找整数

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

第二题,难度直接起飞!第一题就是个幌子,第二题开始光明正大的上难度了。

这题纯靠暴力解法,小蓝考试时不会做,直接枚举49组数据,结果一天都跑不完!

后来发现了大佬的方法,真是妙绝!下面这道题解法参考大佬思路:2022第十三届蓝桥杯PythonB组_ephemeral-fever的博客-CSDN博客

还可以找规律用最小公倍数做出来,下面参考大佬的解法:

​​​​​​第十三届蓝桥杯Python B组第二题_一天掉10根头发的博客-CSDN博客

接下来拿出新手必会的大杀器来做——暴力解法!

暴力求解谁都会,关键是什么呢?如何优化代码,能在比赛的2小时内跑完程序。

最好的方法就是找规律,发现数据之间的联系~

从枚举一个个数据:每次+1

到枚举一批批的数据:每次+

速度直接起飞~

暴力三步走:

1.枚举数据找规律:取表后面5个大数判断更容易找到大数据,得到关键数据。

2.找出规律求公式:这些数字是按判断求得的,所以一定存在公式。

3.遍历公式找答案:通过公式进行快速遍历,30s轻松找到十六位数的答案。

?代码详解  

#1.枚举数据找规律 i=1 while True: flag=True if i%49!=46: flag=False if i%48!=41: flag=False if i%47!=5: flag=False if i%46!=15: flag=False if i%45!=29: flag=False if flag: print(i) i+=1 '''      ··· '''
#2.找出规律求公式 a=[, , , ,] #发现存在等差数列 print(a[1]-a[0])# print(a[2]-a[1])# print(a[3]-a[2])# k= b= #求出公式 y=k*x+b
#3.遍历公式找答案 #题目数据 mod = [(2, 1), (14, 11), (26, 23), (38, 37), (3, 2), (15, 14), (27, 20), (39, 23), (4, 1), (16, 9), (28, 25), (40, 9), (5, 4), (17, 0), (29, 16), (41, 1), (6, 5), (18, 11), (30, 29), (42, 11), (7, 4), (19, 18), (31, 27), (43, 11), (8, 1), (20, 9), (32, 25), (44, 33), (9, 2), (21, 11), (33, 11), (45, 29), (10, 9), (22, 11), (34, 17), (46, 15), (11, 0), (23, 15), (35, 4), (47, 5), (12, 5), (24, 17), (36, 29), (48, 41), (13, 10), (25, 9), (37, 22)] #遍历公式 x=0 k= b= while True: flag=True y=k*x+b for i,j in mod: if y%i !=j: flag=False break if flag==True: print(y)#20409 break x+=1

⭐试题 C: 纸张尺寸

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

这道题其实挺简单的,找到规律就能解!

小蓝考场上挺急的,直接就草稿纸手推10种方案,比较耗时间,不太推荐。

稍微动一下脑筋其实挺容易的,找到规律:每次折叠后,都有一条边减少了一半。

我们列出关于边的所有情况,分别是:旧长,旧宽,新长,新宽。

通过折叠几次手里的草稿纸,可以发现规律,新长=旧宽,新宽=旧长/2。

不断迭代下去,就搞定啦~

?代码详解  

#试题 C: 纸张尺寸 s=input() #A1 n=int(s[1]) #1 x,y=1189,841 #旧长,旧宽 for i in range(n): #0 x,y=y,x//2 #841,1189//2 print(x) #841 print(y) #594

⭐试题 D: 数位排序

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

依旧还是一道数论题,蓝桥杯从前年的暴力杯,到去年的动规杯,最后来到今年的数论杯。

不禁感慨~真是一年比一年卷呀~小蓝感觉自己就是个包心菜,虽然很卷,但还是菜(/▽\)

?代码详解  

#试题 D: 数位排序 n=int(input()) m=int(input()) d=dict() for i in range(1,n+1): d[i]=sum(list(map(int,str(i)))) #建立字典里的键值对 l=list(d.items()) #将字典的键值对转换成列表方便排序 l.sort(key=lambda x:x[1]) #按第二个参数排序 print(l[m-1][0]) ''' input: 13 5 print: 3 d字典: d={1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, 10: 1, 11: 2, 12: 3, 13: 4} l排序前: l=[(1, 1), (2, 2), (3, 3), (4, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9), (10, 1), (11, 2), (12, 3), (13, 4)] l排序后: l=[(1, 1), (10, 1), (2, 2), (11, 2), (3, 3), (12, 3), (4, 4), (13, 4), (5, 5), (6, 6), (7, 7), (8, 8), (9, 9)] '''

⭐试题 E: 蜂巢

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

非常感谢评论区两位大佬的题解!题解非常通俗易懂!

不仅有详细的注释,而且注释详细,小伙伴点击下面链接即可传送跳转!

小明大佬的题解?

【蓝桥系列】——十三届蓝桥杯PythonB组第五题E题蜂巢(AC代码)_普通小明的博客-CSDN博客

 小白大佬的题解?

蓝桥杯2022年第十三届省赛真题蜂巢 python_学习中小白的博客-CSDN博客

?代码详解  

小明的代码

def cc(f,len): # 坐标映射|| f为方向,len为行走的距离,返回值为dx,dy的增量(微分) if f==0:return (-len,0) elif f==1:return (-len/2,len*e/2) elif f==2:return (len/2,len*e/2) elif f==3:return (len,0) elif f==4:return (len/2,-len*e/2) elif f==5:return (-len/2,-len*e/2) e=30.5 # 存根号3 d1,p1,q1,d2,p2,q2=map(int,input().split()) a1=[[d1,p1],[(d1+2)%6,q1]] # a路径的两次方向变化 b1=[[d2,p2],[(d2+2)%6,q2]] # b路径的两次方向变化 a=[0,0] # a点映射后的坐标(x,y) b=[0,0] # b点映射后的坐标(x,y) for i in range(2): # 进行a路径的坐标映射 dx,dy=cc(a1[i][0],a1[i][1]*2) # 因为一格长度是2所以*2 a[0]+=dx a[1]+=dy for i in range(2): # 进行b路径的坐标映射 dx,dy=cc(b1[i][0],b1[i][1]*2) b[0]+=dx b[1]+=dy x,y=abs(b[0]-a[0]),abs(b[1]-a[1]) # 计算a点b点的水平垂直距离 # 蓝线可根据斜率区分,蓝线上的情况两种都可以所以这里分给蓝线右下方 if abs(y/x)<=e: # 蓝线右下方 len=round(((x-y*e/3)+(y*e*2/3))/2) # 因为有根号有精度问题需要进行四舍五入 print("%d"%len) else: # 蓝线左上方 len=round(y*e/3) print("%d"%len)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)小白的代码

def zuobiao(x, y, d, step): # 查找BC两点坐标 if d == 0: x -= 2*step return x,y elif d == 1: x -= step y += step return x,y elif d == 2: x += step y += step return x,y elif d == 3: x += 2*step return x,y elif d == 4: x += step y -= step return x,y else: x -= step y -= step return x,y def f(xb,yb,xc,yc): if abs(xb-xc) <= abs(yb-yc): return abs(yb-yc) else: if xb < xc: # B点在左边 res = abs(yb-yc)+(xc-abs(yb-yc)-xb)//2 return res else: # C点在左边 res = abs(yc-yb)+(xb-abs(yc-yb)-xc)//2 return res if __name__=="__main__": d1,p1,q1,d2,p2,q2 = map(int,input().split()) xb1, yb1 = zuobiao(0,0,d1,p1) xb, yb = zuobiao(xb1, yb1, (d1+2)%6, q1) xc1, yc1 = zuobiao(0,0,d2,p2) xc, yc = zuobiao(xc1, yc1, (d2+2)%6, q2) print(f(xb,yb,xc,yc)) 

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


⭐试题 F: 消除游戏

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

下面依然是一道暴力枚举题,暴力枚举YYDS!

一看题目就被吓到了,删除边缘字符,这么复杂,怎么搞呀?

结果一看题解,没想到这么简单!

先定义个函数,专门用来处理题目中的字符串操作。

就照着题目给的公式写,没想到答案都藏在题目里 (+_+)?

再写个主函数,循环判断字符串的边缘字符是否删除完毕?就搞定啦~

?代码详解  

#试题 F: 消除游戏 def f(s): #删除一个字符串s的所有边缘字符 d=set() #集合结构确保边缘字符不重复 for i in range(1,len(s)-1): if s[i]==s[i-1] and s[i]!=s[i+1]: d.add(i) d.add(i+1) if s[i]==s[i+1] and s[i-1]!=s[i]: d.add(i-1) d.add(i) s=list(s) #转化成列表方便操作 for i in d: #删除集合里的边缘字符 s[i]='' return ''.join(s) #转换回字符串 s=input() for i in range(264): temp=s #temp记录一开始的字符串 s=f(s) #进行一次函数运算 if s==temp: #运算后和运算前字符串相同,说明已删除到最简形式 print(s) #直接输出结果 break #结束循环 if len(s)==0: print('EMPTY') break ''' input: sdfhhhhcvhhxcxnnnnshh print: s ''' 

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


⭐试题 G: 全排列的价值

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

啊这好难,不太会呀,直接参考大佬题解?

试题G:全排列的价值(第十三届蓝桥杯省赛Python B组)_零号记事本的博客-CSDN博客

?代码详解  

#试题 G: 全排列的价值 import itertools a=int(input()) b=[int(s) for s in range(1,a+1)] ans=0 for i in itertools.permutations(b): for k in range(1,a): for j in range(0,k): if i[j] 
          

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

#试题 G: 全排列的价值 import math n=int(input()) print(sum(range(n))*math.factorial(n)//2%)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


⭐试题 H: 技能升级

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

一直都是暴力解法q(≧▽≦q)

?代码详解  

#试题 H: 技能升级 n,m=map(int,input().split()) a=[list(map(int,input().split())) for i in range(n)] ans=0 while m>0: a=sorted(a,key=lambda x:x[0],reverse=True)#每次都从大到小排序 ans+=a[0][0] a[0][0]-=a[0][1] m-=1 print(ans) ''' input: 3 6 10 5 9 2 8 1 print: 47 demo: [[10, 5], [9, 2], [8, 1]] [[9, 2], [8, 1], [5, 5]] [[8, 1], [7, 2], [5, 5]] [[7, 1], [7, 2], [5, 5]] [[7, 2], [6, 1], [5, 5]] [[6, 1], [5, 2], [5, 5]] ''' 

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


⭐试题 I: 最长不下降子序列

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

啊这好难,还是做不出来,继续参考大佬题解?第十三届蓝桥杯省赛Python 组_AYO_YO的博客-CSDN博客

?代码详解  

#试题 I: 最长不下降子序列 import copy # 判断非递减 def isfdj(lst): return lst == sorted(lst) n, k = map(int, input().split()) ls = list(map(int, input().split())) l = [] for i in range(1, n - k): tmp = copy.deepcopy(ls) t = ls[i - 1] for j in range(i, i + k): tmp[j] = t ll = 0 # 当前子串长度 low = 0 high = 1 while high < n: if isfdj(tmp[low:high]): ll += 1 else: l.append(ll) ll = 0 low = high high += 1 l.append(ll) print(max(l)) ''' input: 5 1 1 4 2 8 5 print: 4 ''' 

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


⭐试题 J: 最优清零方案

?传送锚点

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

 ?思路点拨

第十三届蓝桥杯省赛Python 组_AYO_YO的博客-CSDN博客

?代码详解  

#试题 J: 最优清零方案 n,k=map(int, input().split()) a=list(map(int, input().split())) i,c=0,0 while True: r=i+k if r<=n: if 0 not in a[i:r]: a[i:r]=map(lambda x: x-1, a[i:r]) c+=1 else: i=a[i:r].index(0)+i+1 else: break c+=sum(a) print(c) ''' input: 4 2 1 2 3 4 print: 6 ''' 

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)


?考后寄语

if 进国赛:

小伙伴可以继续刷题战斗!

小蓝已经帮大家整理好了:python组之前的所有国赛真题?

2021年蓝桥python组国赛

2020年蓝桥python组国赛

else:

没进国赛的小伙伴,小蓝陪你们明年再战!

下面是小蓝明年考前的复习资料?

备战蓝桥21篇专题系列

finally:

最后,成败当然重要,体验可能更重要。

[这是你命运里必须经历的一部分,接受它就好了」。

不是消极地听天由命,而是积极地接受现实、为所当为。

一个人身上的坚持,对生活热情且执着的秉性,

善于自我教育和不断成长的意识,才是最重要的。

决定你人生和命运的,不是你比赛拿奖与否,不是你目前有无找到好工作,

不是你有无遭遇人生低谷,不是你有没有选对男朋友,或者有无寻得好的婚姻。

是你这个人,你的性格,你的勇气和行动。                             ———— 高冷冷


备战蓝桥杯,我们明年见!

【蓝桥真题】——2022年蓝桥pythonB组省赛真题+解析+代码(通俗易懂版)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/178654.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午4:47
下一篇 2026年3月26日 下午4:47


相关推荐

  • pycharm查看python版本-pycharm如何设置python版本

    pycharm查看python版本-pycharm如何设置python版本直接上图 mac 环境 一 设置项目的 python 版本 File DefaultSetti 在弹出的界面上 参考下图 左上角的下拉框里 选择 python 解释器的版本即可 建议 直接安装 anaconda 这个已经集成了很多第三方的类库 二 添加第三方类库仍然在上图中 下面有一个 号按钮 点击进入下图 直接在搜索框里 搜索需要的第三方类库即可 以 tensorflow 为例 找到后点击

    2026年3月27日
    2
  • 【转载】秒杀系统架构优化思路

    【转载】秒杀系统架构优化思路

    2021年11月18日
    45
  • MacBook Pro最全快捷键指南——高效型选手必备

    MacBook Pro最全快捷键指南——高效型选手必备剪切、拷贝、粘贴和其他常用快捷键Command-X:剪切所选项并拷贝到剪贴板。Command-C:将所选项拷贝到剪贴板。Command-V:将剪贴板的内容粘贴到当前文稿或应用中。Command-Z:撤销前一个命令。随后您可以按Command-Shift-Z来重做,从而反向执行撤销命令。Command-A:全选各项。Command-F:查找文稿中的项目或打开“查找”窗…

    2022年5月25日
    55
  • html 出现脚本错误,当前页面脚本发生错误,教您当前页面脚本发生错误的解决方法…

    html 出现脚本错误,当前页面脚本发生错误,教您当前页面脚本发生错误的解决方法…要是进入网页的时候都弹出怎么一个 当前页面脚本发生错误 的对话框的话 那么的确是会使我们感到厌烦 每次打开页面都弹出一次 然后底部会提示 是否要在此页面上继续运行脚本 我们可以选的是或者否 选择之后当前页面脚本发生错误对话框就消失了小编发现最近有不少的小伙伴在打开浏览器的时候 都会跳一个 当前页面脚本发生错误 对话框 想出现这个情况的时候该怎么处理呢 今天小编就来将解决当前页面脚本文件发生错误的方

    2026年3月26日
    2
  • 深度解读《AI 智能体的上下文工程》:构建高效 Agent 的七个宝贵教训

    深度解读《AI 智能体的上下文工程》:构建高效 Agent 的七个宝贵教训

    2026年3月15日
    3
  • urb介绍

    urb介绍urb 介绍 usbrequedtbl 简称 urbusb 总线就像一条高速公路 货物 人流之类的可以看成是系统与设备交互的数据 而 urb 就可以看成是汽车 USB 的 endpoint 有四种不同类型 也就是说能在这条高速公路上流动的数据有四种 但是对汽车没有要求 所以可以用 urb 运载这四种数据不过首先要告诉运什么 目的地什么

    2026年3月20日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号