题目描述:
有 n 只水桶,其中有且只有一桶装的含有毒药,其余装的都是水。它们从外观看起来都一样。
如果小羊喝了毒药,它会在 x 分钟内死去。
问题来了,如果需要你在y分钟内,弄清楚哪只水桶含有毒药,你最少需要多少只小羊?
注意:
可以允许小羊同时饮用任意数量的桶中的水,并且该过程不需要时间。
小羊喝完水后,必须有 x 分钟的冷却时间。在这段时间里,只允许观察,而不允许继续饮水。
输入描述:
输入包含多组测试数据,每行输入三个整数 ,分别是水桶的数量 n( 1 <= n <= 200000 ) , 小羊中毒后会在 x 分钟内死去 ( 1 <= x <= 60 ),以及你需要在 y 分钟内 ( x <= y <= 1200 )弄清楚哪桶水有毒
输出描述:
输出你最少需要的小羊的数量
测试样例:
样例输入 1
2 5 10
5 15 60
样例输出 1
1
1
思路:一只小羊四次机会可以测完5杯水,
那么两只小羊四次机会可以测完25杯水
两只羊,一只喝行,一只喝列
如果全死,就是交叉点有毒,如果死1只,就是某行或者某列
然后用一只羊可以测出有毒的水
三维四维五维一直到高维都是一样的
#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main(){
int n, x, y;
while(cin >> n >> x >> y){
if(n == 1){
cout << 0 << endl;
continue;
}
ll ans = (y / x) + 1;
int a = 1;
ll sum = ans;
while(sum < n){
sum *= ans;
a++;
}
cout << a << endl;
}
return 0;
}