C ++中的可怜猪

假设有1000个水桶,其中一个是有毒的,另一个则装满水。它们看起来都很相似。如果猪喝了毒药,它将在15分钟内死亡。一小时内发现有毒桶所需的最小数量的猪是多少?

因此,现在考虑一般情况并为此设计一种算法。因此,一般情况是,如果有n个不同的水桶,而喝猪的毒药将在m分钟内死亡,那么在p分钟内需要多少只猪才能找到有毒水桶?恰好有一个装有毒药的水桶。

当n = 1000,m = 15和p = 60时,输出将为5。

为了解决这个问题,我们将遵循以下步骤-

  • ret:= 0

  • while(minutesToTest / minutesToDie + 1)^ ret <buckets,这样做-

    • (增加ret 1)

  • 返回ret

让我们看下面的实现以更好地理解-

示例

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int poorPigs(int buckets, int minutesToDie, int minutesToTest) {
      int ret = 0;
      while(pow((minutesToTest / minutesToDie + 1), ret) < buckets) ret++;
      return ret;
   }
};
main(){
   Solution ob;
   cout << (ob.poorPigs(1000,15,60));
}

输入值

1000
15
60

输出结果

5