可怜的小羊 ZJYYC 数学 思路

题目描述:

有 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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值