烧绳计时问题
来源:互联网 发布:理财软件哪个收益最高 编辑:程序博客网 时间:2024/04/30 13:32
问题:
烧一根不均匀的绳,从头烧到尾总共需要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的倍数的时间。
- 烧绳计时问题
- 面试题—烧绳计时问题
- 计时问题
- 关于unity计时问题
- CUDA 计时问题
- 关于在线计时的问题!
- FileFuzzer设计时AfxBeginThread问题
- openmp并行的计时问题
- 烧绳子计时
- 计时
- 计时
- 计时
- 计时
- 计时
- 关于当前公历计时误差的问题
- Linux 下批量计时中的问题
- C/C++计时功能实现问题整理
- 关于C#的精确计时问题
- STM32中printf重定向到串口
- dreamweaver网页报错_关于tomcat
- linux下socket connect超时设置
- 探寻C++最快的读取文件的方案
- AOP编程的理解
- 烧绳计时问题
- objective-c之@synthesize和@property含义
- cocos2d与cocos2d x卸载
- 黑马视频绝对给力,各位亲想要下载火速前往,
- 实现控制台上的进度条
- SQL数据库 本地 127.0.01 连接 配置
- C,C++表达式求值顺序
- Android培训班(114)start_kernel函数11
- windows编程学习笔记一之——windows程序基本框架