1228. 可怜的猪
有1000个桶,有且仅有一个桶里面装了毒药,其他的都装了水。这些桶从外面看上去完全相同。如果一只猪喝了毒药,它将在15分钟内死去。在一个小时内,至少需要多少只猪才能判断出哪一个桶里装的是毒药呢?
思考回答这个问题,随后请设计实现一个算法去处理更一般的情况。
样例
样例1:
输入: buckets = 1000; minutesToDie = 15; minutesToTest = 60
输出: 5
挑战
假如一共有 n 个桶,只有一个桶装了毒药。一只猪将在喝完毒药 m 分钟后死去。你需要多少只猪才能在 p 分钟内找出那个装毒药的桶呢?
public class Solution {
/**
* @param buckets: an integer
* @param minutesToDie: an integer
* @param minutesToTest: an integer
* @return: how many pigs you need to figure out the "poison" bucket within p minutes
*/
public int poorPigs(double buckets, int minutesToDie, int minutesToTest) {
// Write your code here
if (buckets < 2) return 0;
int j = minutesToTest / minutesToDie+1;
if (buckets < j) {
return 1;
} else {
int i = 0;
int sum=1;
for (; sum < buckets; ) {
i++;
sum = sum * j;
}
return i;
}
}
}