这两道填空题,应该是蓝桥杯中最简单的两道题,我自己总结了一下,分享给大家
2019——1(2019)
r = 0
for i in range(1, 2020):
for j in str(i):
if j in ['2', '0', '1', '9']:
r = r + i ** 2
break
print(r)
2020——1 (门牌制作)
count计算个数
n=0
for i in range(1,2021):
n+=str(i).count('2')
print(n)
2021——1 (卡片)
n=0
i=1
while True:
n+=str(i).count('1')
if n==2021:
break
i+=1
print(i)
2019——2 (数列求值)
题目要求后面四位数的个数,我们只需要将后面的四位数来进行计算即可
l = [1, 1, 1]
for i in range(20190321):
mm = sum(l) % 10000
l[0] = l[1]
l[1] = l[2]
l[2] = mm
print(l[2])
2020——2 (寻找2020)来自于
通过 with open将题目要求的数据读取出来放进一个二维数组中,
进行分开讨论将所有情况计算出
l = []
with open('2020.txt') as tp:
for line in tp.readlines():
l.append(list(line.strip()))
s = len(l)
q = len(l[1])
count = 0
for i in range(s - 1): # 行
for j in range(q - 3):
if (l[i][j] == '2' and l[i][j + 1] == '0' and l[i][j + 2] == '2' and l[i][j + 3] == '0'):
count = count + 1
for i in range(q - 3): # 列
for j in range(s - 1):
if (l[i][j] == '2' and l[i + 1][j] == '0' and l[i + 2][j] == '2' and l[i + 3][j] == '0'):
count = count + 1
for i in range(q - 3): # 左上到右下
for j in range(q - 3):
if (l[i][j] == '2' and l[i + 1][j + 1] == '0' and l[i + 2][j + 2] == '2' and l[i + 3][j + 3] == '0'):
count = count + 1
print(count)
2021——2(直线)
通过数学,公式
k=(y2-y1)/(x2-x1)
b=(x2y1-x1y2)/(x2-x1)
points = [[i, j] for i in range(20) for j in range(21)]
res = set()
for i in range(len(points)):
x1, y1 = points[i][0], points[i][1]
for j in range( len(points)):
x2, y2 = points[j][0], points[j][1]
if x1 == x2:
continue
k = (y2 - y1) / (x2 - x1)
b = (x2 * y1 - x1 * y2) / (x2 - x1)
if (k, b) not in res:
res.add((k, b))
print(len(res) + 20)