一根长度为 n 的蜡烛,随机分成两段(一共有 n-1 种分割方式,假设概率均等),将两段蜡烛同时燃烧,如果一根燃尽,另一根还剩长度 >= 2,则把剩余这根蜡烛继续切分,然后分别点燃,直到蜡烛燃尽。注意第二次切分之后不再继续切分。
求蜡烛燃尽的期望时间。
不确定对不对。。。
# Python 3 def time_second(n: int) -> float: n1 = n >> 1 # n // 2 if n & 1: # odd return n1 * (n1 + n) / (n - 1) else: return n1 * (n1 + n - 2) / (n - 1) def candle(n: int) -> float: n1 = n >> 1 # n // 2 if n & 1: # odd tot = n + 1 # (n // 2 + 1)* 2 else: tot = n1 tot += (n1 - 1) * n1 for i in range(1, n1): tot += time_second(n - i - i) * 2 return tot / (n - 1) # TEST n = 4 res = candle(n) print(f'{res: .4f}')
全部评论
(4) 回帖