蓝桥杯真题训练
1-分数
每项是前一项的一半,如果一共有 20项,求这个和是多少,结果用分数表示出来。分子分母要求互质。
from fractions import Fraction
import math
n = 0
m = 1
for i in range(19,-1,-1):
m = m*int(pow(2,i))
for k in range(20):
n = n + int(m/pow(2,k))
f = Fraction(n,m)
print(f)
解题思路:暴力,直接求全部乘起来的数,再除各个分母,再相加,最后用fractions模块里的函数Fraction来表示分数。
2-删除字符
给定一个单词,请问在单词中删除 tt 个字母后,能得到的字典序最小的单词是什么?
n = list(input())
m = int(input())
x = ''
c = n[0:m+1]
for i in range(m):
n.remove(max(c))
c = n[0:m + 1]
for i in n:
x = x + i
print(x)
解题思路:字典序最小,就是使字符串前面几位尽可能的取小,就在前m位里把最大的去掉,再和后面剩下的并一起,再重复找前m位最小,最后删减m个在“前m位最大的”,剩下的就是答案。
3-贪吃蛇长度
小明在爷爷的私人收藏馆里找到一台老式电脑。居然没有图形界面,只能用控制台编程。 经过小明的一阵摸索,神奇地设计出了控制台上的贪食蛇游戏。
如上,是游戏时画面截图。
其中,HH 表示蛇头,TT表示蛇尾。# 表示蛇的身体,@ 表示身体交叉重叠的地方。 你能说出现在的贪吃蛇长度是多少吗?
s = """
+-------------------------------------------------+
| |
| H###### #### |
| # # # |
| # # # |
| # #### # # |
| # # # # # |
| ######@### # # |
| # #### # # |
| # # # # # |
| ####@#######@### # # |
| # # # # # |
| T ##### # # # ## |
| # # ### ### ## |
| ################ # # #### |
| # # # # |
| ############## #######@########## |
| # ### |
| ########################### |
+-------------------------------------------------+
"""
a = s.count("#")
b = s.count("@")
print(2+a+b*2)
解题思路:这个太简单了,题目提示就够了,只要数出 # 的数目算 1,数出 @的数目算的数目算2,再加上头尾各算,再加上头尾各算1 就计算好了。
**
4.学习dp动态规划和背包问题
**