烧绳计时问题

问题:

烧一根不均匀的绳,从头烧到尾总共需要1个小时。现在有若干条材质相同的绳子,问如何用烧绳的方法来计时1小时15分钟呢?

解析:

1小时15分钟 = 1小时 + 15分钟;当一只绳子燃烧完后,点燃另外一根绳子,可以对时间进行加法。

通过1个小时的绳子,我们可以准确的得到30分钟,方法是:

对一根完整的绳子两端同时开始烧,烧完的时候就是30分钟;

同理,根据30分钟的绳子,我们可以准确的得到15分钟;

因此,我们可以这样得到1小时15分钟:

step 1:将一根完整的绳子A两端同时开始烧,另一根完整的绳子B一端开始烧;

step 2:当A烧完的时候(30分钟),我们再将B的另一端点燃,即对一根30分钟的绳子两端同时烧;

step 3:当B烧完的时候(30 + 15),我们得到了45分钟;

step 4:再如同1,我们再从两端同时开始烧一跟绳子C,烧完时候即又过去30分钟,所有总共得到:30 + 15 + 30 = 1小时15分钟

推广:

1. 通过点燃绳子两端,可以获得这根绳子二分之一的时间;

2. 当一只绳子燃烧完后,点燃另外一根绳子,可以对时间进行加法;

3. 同时点燃两根绳子,可以获得两根绳子燃烧结束的时间差,也就是对时间进行减法;

综上,也就是说,通过燃烧绳子,我们可以对时间进行除2,加法 和 减法 三种操作。

有上面关于这些运算的讨论,通过燃烧绳子,我们可以获得任意满足公式(60 * m) / (2 ^ n)的时间,其中m和n为整数。如果只考虑整数时间,由于60和2^n的最大公约数为4(另外一个思路是15分钟再分就是7.5分钟),我们可以获得的最小时间是15分钟,因为我们可以得到 m*15分钟,即可以获得任意15的倍数的时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值