本文主要是介绍6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
6月1日,今天参加了第十五届蓝桥杯国赛,本人打的是pb组,做完回来就把代码复盘了一下。但由于成绩未出,答案仅供参考。
第一题:31
第二题: 没写出来
第三题:
dic={}
n,m=map(int,input().split())
ls=list(map(int,input().split()))
for i in range(1,n+1):dic[i]=[]
for j in ls:dic[j].append(0)for k in range(1,n+1):dic[k].append(abs(k-j))
li=[]
for l in dic.values():li.append(max(l))
for q in li:print(q,end=' ')
第四题:
n,m=map(int,input().split())
ls=list(map(int,input().split()))
while m:a_max,mp=0,-1for i,j in enumerate(ls):if j>a_max:a_max=jmp=iif a_max%2==0:ls[mp]=a_max//2m-=1else:ls[mp]=a_max//2+1m-=1
print(max(ls))
第五题:
思路:马走日,象走田。 bfs里面套bfs 以象可以 走的位置为end,遍历马可走的位置,步数相加取最小值。
n,x1,y1,x2,y2=map(int,input().split())
def BFSM(n,x1,y1,x2,y2):dirs={lambda x,y:(x+1,y+2),lambda x,y:(x+2,y+1),lambda x,y:(x+2,y-1),lambda x,y:(x+1,y-2),lambda x,y:(x-1,y-2),lambda x,y:(x-2,y-1),lambda x,y:(x-2,y+1),lambda x,y:(x-1,y+2)}dirs2={lambda x,y:(x-2,y+2),lambda x,y:(x+2,y+2),lambda x,y:(x+2,y-2),lambda x,y:(x-2,y-2)}seen=set()st=(x1,y1)ed=(x2,y2)seen.add(st)q=[(st,0)]p=[(ed,0)]seen_1={}seen_1[ed]=0ls=[]while p:now_1,step_1=p.pop(0)for dir in dirs:new_1=dir(now_1[0],now_1[1])if 0<=new_1[0]<=n+1 and 0<=new_1[1]<=n+1 and new_1 not in seen_1.keys():seen_1[new_1]=step_1+1p.append([new_1,step_1+1])while q:now_node,step=q.pop(0)if now_node in seen_1.keys():kk = step+seen_1[now_node]ls.append(kk)for dir in dirs:new_node = dir(now_node[0],now_node[1])if 0<=new_node[0]<=n+1 and 0<=new_node[1]<=n+1 and new_node not in seen:seen.add(new_node)q.append([new_node,step+1])if ls:return min(ls)else: return -1
print(BFSM(n,x1,y1,x2,y2))
第六题:
思路:主要是考栈的使用,用字典取存储每个左括号相对应的字母个数,定义符号栈和字母栈,但是其中符号栈可以出栈,但是字母栈只索引,不出栈。
s=str(input())
s0='qwertyuioplkjhgfdsazxcvbnm'
q=int(input())
for i in range(q):s1,b1=map(str,input().split())b=int(b1)v=s.count(s1)dic={}if v<b: print(0)else:re=0stick_1=[]stick_2=[]for j in s:if j=='(':stick_1.append([j,0])elif j in s0:stick_2.append(j)for w in range(len(stick_1)):stick_1[w][-1]+=1else:k_1,st=stick_1.pop()if st==0:continueve=stick_2[-1,-st-1,-1]if ve.count(s1)>=b:re+=1print(re)
第七题:
思路:这道题的数据量很大,但数据很有特点,所以用了以下的定义一个目标列表来遍历这个列表,可能不能全部样例都过,但是我感觉这样会很省时间,并且可以过一多半样例。
n=int(input())
mod=998244353
b=str(n)[-1]
if b==0:print(-1)
else:ls=[1,11,111,1111,11111,111111,1111111,11111111,111111111,111111111,1111111111,11111111111,111111111111,1111111111111,2,22,222,2222,22222,222222,2222222,22222222,222222222,222222222,2222222222,22222222222,222222222222,2222222222222,3,33,333,3333,33333,333333,3333333,33333333,333333333,333333333,3333333333,33333333333,333333333333,3333333333333,4,44,444,4444,44444,444444,4444444,44444444,444444444,444444444,4444444444,44444444444,444444444444,4444444444444,5,55,555,5555,55555,555555,5555555,55555555,555555555,555555555,5555555555,55555555555,555555555555,5555555555555,6,66,666,6666,66666,666666,6666666,66666666,666666666,666666666,6666666666,66666666666,666666666666,6666666666666,7,77,777,7777,77777,777777,7777777,77777777,777777777,777777777,7777777777,77777777777,777777777777,7777777777777,8,88,888,8888,88888,888888,8888888,88888888,888888888,888888888,8888888888,88888888888,888888888888,8888888888888,9,99,999,9999,99999,999999,9999999,99999999,999999999,999999999,9999999999,99999999999,999999999999,9999999999999]for j in ls:if j%n==0:print(j%mod)breakelse: print(-1)
第八,九,十题,无能为力了。 坐等明天出成绩吧!
这篇关于6/1 第十五届蓝桥杯国赛pb组 真题本人答案 仅供参考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!