算法:小明的爸爸是名药剂师。他面前一共5堆药片,每一堆有很多的药片(每一堆中的药片,要么全都是15毫克药片,要么全都是16毫克的药片)。药剂师今天有些大意,他搞不清究竟是哪些堆中是16毫克的了。这些

算法:小明的爸爸是名药剂师。他面前一共5堆药片,每一堆有很多的药片(每一堆中的药片,要么全都是15毫克药片,要么全都是16毫克的药片)。药剂师今天有些大意,他搞不清究竟是哪些堆中是16毫克的了。这些药片形状一摸一样、肉眼上无法辨别。小明很着急,他需要用称称一下。你能帮他用最少的称重次数找出这些堆中药片剂量吗?

把药片堆进行编号:第1号堆中取1粒;第2号堆中取2粒;第3号堆中取4粒;第4号堆中取8粒;第5号堆中取16粒。
一次称重,如果按照15毫克算,塔塔发现多余了一些重量,例如多余了22毫克,十进制数22可以写成1 * 16 + 0 * 8 +1 * 4 + 1 * 2 + 0 * 1。化成唯一的的二进制数为 10110。多余的重量一定来自16粒那一堆,4粒那一堆,2粒那一堆。
1×15
2×15
3×15
4×15
5×15
=465
多出来的是16毫克的。
将多出来的十进制数转化为二进制即可对应哪一堆多了。因为15和16相差1,然后1,2,4,8,16刚好为二进制数。所以可以用这个办法判断。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值