4102. White Rats
TOJ 4102.White Rats
题目网址链接
实验室有N杯红酒,其中一杯有毒,用小白鼠测试,喝了有毒的酒必死,请问测试出毒酒最少需要几只老鼠?
题目中缺少了一个隐含条件,就是要用所有的小白鼠一次测试出毒酒,否则的话,完全可以用一只小白鼠一直喝到底,通过里面的测试样例可以看出来,只有一只小白鼠是不可以的。
具体的方法可以看这个
有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
(感谢知乎)
代码如下:
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
long long f[105];
void Deal_with(){
int T;
f[0] = 1;
for(int i=1;i<=32;i++){
f[i] = f[i-1] * 2;
}
scanf("%d",&T);
while(T--){
long long n;
scanf("%lld",&n);
for(int i=0;i<=32;i++){
if(f[i] >= n){
printf("%d\n",i);
break;
}
}
}
}
int main(void){
Deal_with();
return 0;
}