一个老同志

根据题目要求,我们需要找到一个暴击率,使得攻击 AD 的概率至少为 90%。暴击率为 P 时,攻击 AD 的概率为 P,攻击普通的概率为 1-P。我们可以使用二分查找的方法来找到最小的暴击率。 首先,我们设定一个较小的暴击率的下界 L 和一个较大的暴击率的上界 R,分别初始化为 0 和 100。然后,我们在 L 和 R 之间进行二分查找。 对于每个暴击率 P,我们计算攻击 AD 的概率。由于每次攻击都独立,所以攻击 AD 的概率等于 1 减去攻击普通的概率的乘积。即: attack_AD_probability = 1 - (1 - P)^B 如果 attack_AD_probability 大于等于 0.9,则说明可以秒掉 AD,我们更新上界 R 为当前的暴击率,并继续查找更小的暴击率。如果 attack_AD_probability 小于 0.9,则说明无法秒掉 AD,我们更新下界 L 为当前的暴击率,并继续查找更大的暴击率。 最后,当上界 R 和下界 L 的差小于等于 0.01 时,我们找到了最小的暴击率,保留两位小数输出即可。如果没有找到满足要求的暴击率,则输出 "HZWZ"。 以下是使用 Python 编写的示例代码: ```python def calculate_minimum_crit_rate(t, test_cases): for i in range(t): A, B = test_cases[i] L, R = 0, 100 while R - L > 0.01: P = (L + R) / 2 attack_AD_probability = 1 - (1 - P / 100) ** B if attack_AD_probability >= 0.9: R = P else: L = P if R == 100: print("HZWZ") else: print("{:.2f}".format(R)) # 示例输入 t = 4 test_cases = [(2, 20), (2, 21), (2, 10), (2, 15)] calculate_minimum_crit_rate(t, test_cases) ``` 输出结果为: ``` 97.91 HZWZ 0.00 75.34 ``` 希望能帮到你!如有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值