解法
解题关键在于:
- 每次可以把多个桶里的水混在一起喂给猪
- p分钟内只要能喂就行,例如15分钟起效的话,60min可以喂5次
假设可以喂t次,那么把桶编号为0~t-1,按照t进制的规律来喂猪,假设t-1有l位,比如105化成5进制是410,所以从0到410,第0位可以从0取到4,第二位从0取到4,第三位从0取到4。
我们用3只猪:
- 第一只对应第0位,所以它被喂下编号的第0位是0的桶的混合,第二、第三只依此类推
- 假如第0只猪喂到2的时候死了,说明有毒的桶编号第0位为2,其它的继续
class Solution(object):
def poorPigs(self, buckets, minutesToDie, minutesToTest):
"""
:type buckets: int
:type minutesToDie: int
:type minutesToTest: int
:rtype: int
"""
t = minutesToTest//minutesToDie+1
cnt = 0
buckets -= 1
while buckets:
cnt += 1
buckets /= t
return cnt