蓝桥杯真题训练
1-猴子分香蕉
5 只猴子是好朋友,在海边的椰子树上睡着了。这期间,有商船把一大堆香蕉忘记在沙滩上离去。
第 1 只猴子醒来,把香蕉均分成 5 堆,还剩下 1 个,就吃掉并把自己的一份藏起来继续睡觉。
第 2 只猴子醒来,把香蕉均分成 5堆,还剩下 2个,就吃掉并把自己的一份藏起来继续睡觉。
第 3 只猴子醒来,把香蕉均分成 5堆,还剩下 3个,就吃掉并把自己的一份藏起来继续睡觉。
第 4 只猴子醒来,把香蕉均分成 5堆,还剩下 4个,就吃掉并把自己的一份藏起来继续睡觉。
第 5 猴子醒来,重新把香蕉均分成 5 堆,哈哈,正好不剩!
请计算一开始最少有多少个香蕉。
for i in range(1,500):
k = 4
sum = i*5
while k>0:
if sum% 4 ==0:
sum = int(sum/4)*5+k
k = k - 1
else:
break
if k == 0 :
print(sum)
解题思路:这种猴子分水果的问题都是入门级问题了,就是从后往前累加就好,主要是注意分完之后有没有把剩的吃掉,如果没把剩的吃掉位3121.吃掉了为3141。
2-灌溉
小蓝负责花园的灌溉工作。
花园可以看成一个 nn 行 mm 列的方格图形。中间有一部分位置上安装有出水管。
小蓝可以控制一个按钮同时打开所有的出水管,打开时,有出水管的位置可以被认为已经灌溉好。
每经过一分钟,水就会向四面扩展一个方格,被扩展到的方格可以被认为已经灌溉好。即如果前一分钟某一个方格被灌溉好,则下一分钟它上下左右的四个方格也被灌溉好。
给定花园水管的位置,请问 kk 分钟后,有多少个方格被灌溉好?
n, m = map(int,input().split(" "))
a = [[0 for i in range(m)] for i in range(n) ]
t = int(input())
d = []
for i in range(t):
b,c = map(int,input().split(" "))
a[b-1][c-1] = 1
d.append(b-1)
d.append(c-1)
k = int(input())
while k > 0:
k = k - 1
p = len(d)
for l in range(0,p,2):
if d[l] + 1 <n :
a[d[l]+1][d[l+1]] = 1
d.append(d[l]+1)
d.append(d[l+1])
if d[l+1] + 1 < m:
a[d[l]][d[l+1]+1] = 1
d.append(d[l])
d.append(d[l+1]+1)
if d[l]-1>=0 :
a[d[l]-1][d[l+1]] = 1
d.append(d[l]-1)
d.append(d[l+1])
if d[l+1] -1 >= 0:
a[d[l]][d[l+1]-1] = 1
d.append(d[l])
d.append(d[l+1]-1)
sum = 0
for i in range(n):
for j in range(m):
sum = sum + a[i][j]
print(sum)
解题思路:这题没什么坑,暴力算出就可,看代码就懂。