首页 > 蜡烛燃烧(阿里3.15笔试)
头像
Cynxxx
编辑于 2021-03-16 11:37
+ 关注

蜡烛燃烧(阿里3.15笔试)

一根长度为 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) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

近期热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐