有一口井深30米,井底有一只青蛙,这个青蛙每天可以往上爬3米但是会下滑2米,计算多少天可以爬出井
# 输入井的深度,青蛙每天爬的高度,青蛙每天下滑的高度
well_depth, frog_up, frog_down = map(int, input().split())
# 初始化青蛙的位置和天数
frog_position = 0
days = 0
# 当青蛙的位置小于井的深度时,循环执行
while frog_position < well_depth:
# 天数加一
days += 1
# 青蛙向上爬
frog_position += frog_up
# 如果青蛙已经爬出井口,结束循环
if frog_position >= well_depth:
break
# 否则,青蛙向下滑
else:
frog_position -= frog_down
# 输出天数
print(days)
这段代码的思路是:每次循环,先让青蛙向上爬,然后判断是否已经超过井的深度,如果是,就结束循环;如果不是,就让青蛙向下滑,然后继续循环。每次循环,天数加一。最后输出天数。
这个问题也可以用数学公式来解决。假设青蛙需要n天才能爬出井口,那么有以下等式:
(n-1) * (frog_up - frog_down) + frog_up >= well_depth
这个等式的意思是:在第n天之前,青蛙每天都会先爬上去再滑下来,所以每天净上升的高度是frog_up - frog_down;在第n天,青蛙只需要爬上去就可以了,所以只加上frog_up;这样累计的高度要大于或等于井的深度。解这个不等式,就可以得到n的最小整数值。
根据你给出的数据,井深30米,青蛙每天爬3米,每天下滑2米,代入公式得到:
(n-1) * (3 - 2) + 3 >= 30
化简得到:
n >= 28
所以n的最小整数值是28,也就是说青蛙需要28天才能爬出井口。
depth = 30
climb = 3
slide = 2
total_distance = 0
days = 0
while total_distance < depth:
total_distance += climb
if total_distance < depth:
total_distance -= slide
days += 1
print("青蛙需要 " + str(days) + " 天才能爬出井。")
depth = 30
climb = 3
slide = 2
position = 0
days = 0
while position <= depth:
position += climb
days += 1
if position >= depth:
break
position -= slide
print('青蛙需要爬 {} 天才能从井里爬出来'.format(days))