题目要求计算在给定的繁殖规律下,经过m个月后卡卡将有多少对兔子P,以及如果m个月后卡卡要拥有至少k对兔子,那么开始时妈妈至少应该为卡卡购买多少对兔子Q。

根据题目描述,才出生的一对兔子在一个月后将生出a对兔子,接着在出生后的二个月又将生出b对兔子,在第三个月和以后每个月都会繁殖c对兔子。

我们可以使用动态规划的方法来解决这个问题。

首先,我们定义一个数组dp,dp[i]表示经过i个月后卡卡将有多少对兔子。

根据题目描述,经过0个月后,卡卡刚刚拥有了一对刚出生的兔子,所以dp[0] = 1。

然后,我们可以根据题目描述中的繁殖规律来计算dp[i]。当i大于等于1时,dp[i] = dp[i-1] * c + dp[i-2] * b + dp[i-3] * a。

最后,我们可以根据dp[m]来得到经过m个月后卡卡将有多少对兔子P。

接下来,我们需要计算如果m个月后卡卡要拥有至少k对兔子,那么开始时妈妈至少应该为卡卡购买多少对兔子Q。

我们可以使用二分查找的方法来找到满足条件的最小Q。假设Q的初始范围为[1, k],然后我们可以进行二分查找。

在每一次二分查找中,我们计算中间值mid = (low + high) // 2(low为范围左边界,high为范围右边界),然后计算经过m个月后卡卡将有多少对兔子P(使用上面的方法),如果P小于k,则说明Q太小,应该在[mid+1, high]范围内继续查找,否则,说明Q合适或者太大,应该在[low, mid]范围内继续查找。

最后,当low等于high时,说明找到了满足条件的最小Q。

下面是具体的实现代码


原文地址: http://www.cveoy.top/t/topic/iPZS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录