当前位置:   article > 正文

十五届蓝桥杯第二期模拟赛题单(C++、java、Python)_蓝桥杯灌水

蓝桥杯灌水

备战2024年蓝桥杯  省赛第一期模拟赛题单
备战Python大学A组

        第一题:求余
        第二题:灌水
        第三题:区间最大和
        第四题:最多约数
        第五题:循环位移
        第六题:最后的元音
        第七题:公约移动
        第八题:转换次数
        第九题:最大落差
        第十题:字符显示
        第十一题:数位和相等


第一题:求余

 解题思路:语法

【Python程序代码】

print(pow(2,2023,1000))

最终结果:608


第二题:灌水 

 解题思路:BFS

【Python程序代码】

  1. from collections import *
  2. vis = [[0]*100 for _ in range(100)]
  3. mp = [[0]*32]
  4. for i in range(30):
  5. tep = [0] + list(input())
  6. mp.append(tep)
  7. mp[1][1]=2
  8. dic = [(1,0),(0,1),(-1,0),(0,-1)]
  9. def bfs():
  10. q=deque()
  11. q.append((1,1))
  12. vis[1][1]=1
  13. while q:
  14. t = q.popleft()
  15. for i in range(4):
  16. nx,ny = t[0]+dic[i][0] , t[1]+dic[i][1]
  17. if nx<1 or nx>30 or ny<1 or ny>40:continue
  18. if mp[nx][ny]!='0' or vis[nx][ny]:continue
  19. q.append((nx,ny))
  20. vis[nx][ny]=1
  21. res = 0
  22. bfs()
  23. for i in range(1,31):
  24. for j in range(1,41):
  25. if vis[i][j]:res += 1
  26. print(res)
  27. for i in range(1,31):
  28. tep = [str(j) for j in vis[i][1:41]]
  29. print("".join(tep))
  30. print(541)

最终结果:541


第三题: 区间最大和

  解题思路:前缀和

【Python程序代码】

  1. n,k = map(int,input().split())
  2. a = [0] + list(map(int,input().split()))
  3. s = [0]*(n+10)
  4. for i in range(1,n+1):
  5. s[i] = s[i-1]+a[i]
  6. res = 0
  7. for i in range(k,n+1):
  8. res = max(res,s[i]-s[i-k])
  9. print(res)

第四题: 最多约数

 解题思路:语法

【Python程序代码】

  1. def solve(x):
  2. res = 0
  3. i=1
  4. while i*i<=x:
  5. if x%i==0:
  6. res += 1
  7. if x//i>i:
  8. res += 1
  9. i += 1
  10. return res
  11. num,cnt = 0,0
  12. for i in range(6):
  13. nums = list(map(int,input().split()))
  14. for j in nums:
  15. cnt1 = solve(j)
  16. if cnt1>cnt:
  17. cnt = cnt1
  18. num = j
  19. print(num)

最终结果: 901440


第五题: 循环位移

 解题思路:语法

【Python程序代码】

  1. x= input()
  2. print(x[1:]+x[0])

第六题: 最后的元音

  解题思路:语法

【Python程序代码】

  1. s = input()
  2. p = ['a','e','i','o','u']
  3. for i in range(len(s)-1,-1,-1):
  4. if s[i] in p:
  5. print(s[i])
  6. break

 第七题:公约移动

  解题思路:BFS

【Python程序代码】

  1. from math import *
  2. from collections import *
  3. n,m = map(int,input().split())
  4. mp = [[0]*(m+1)]
  5. for i in range(n):
  6. tep = [0] + list(map(int,input().split()))
  7. mp.append(tep)
  8. r,c = map(int,input().split())
  9. vis = [[0]*(m+5) for _ in range(n+5)]
  10. dic = [(1,0),(0,1),(-1,0),(0,-1)]
  11. def bfs():
  12. q = deque()
  13. q.append((r,c))
  14. vis[r][c]=1
  15. while q:
  16. t = q.popleft()
  17. for i in range(4):
  18. nx,ny = t[0]+dic[i][0],t[1]+dic[i][1]
  19. if nx<1 or nx>n or ny<1 or ny>m:continue
  20. if vis[nx][ny] or gcd(mp[nx][ny],mp[t[0]][t[1]])==1:continue
  21. vis[nx][ny]=1
  22. q.append((nx,ny))
  23. bfs()
  24. res= 0
  25. for i in range(1,n+1):
  26. for j in range(1,m+1):
  27. if vis[i][j]:res += 1
  28. print(res)

第八题:转换次数

 解题思路:语法

【Python程序代码】

  1. x = int(input())
  2. while x>=10:
  3. tep =str(x)
  4. tep = [int(i) for i in tep]
  5. now = 1
  6. for i in tep:
  7. if i!=0:now*=i
  8. x = now
  9. print(x)

第九题:最大落差

  解题思路:语法

【Python程序代码】

  1. n = int(input())
  2. a = [0] + list(map(int,input().split()))
  3. re = 0
  4. for i in range(1,n):
  5. if a[i]>a[i+1]:
  6. re = max(re,a[i]-a[i+1])
  7. print(re)

 第十题:字符显示

 解题思路:语法

【Python程序代码】

print(36*30//10)

最终结果:108


第十一题:数位相等

 解题思路:语法

【Python程序代码】

  1. now = 0
  2. for i in range(1,1000000):
  3. er1 = bin(i)[2:]
  4. ba1 = oct(i)[2:]
  5. er2 = [int(j) for j in er1]
  6. ba2 = [int(j) for j in ba1]
  7. if sum(er2)==sum(ba2):
  8. now+=1
  9. #print(i)
  10. if now==23:
  11. print(i)
  12. break

最终结果:4169

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/201310
推荐阅读
相关标签
  

闽ICP备14008679号