Files
python/TangDou/牛吃草问题.md
HuangHai 1f397eca87 'commit'
2025-08-30 18:35:01 +08:00

2.6 KiB
Raw Blame History

牛吃草问题

一、题目描述

首先,题目肯定会给你$4$个数据,我们就这样表示:一块牧场,够$a$头牛吃$b$天,够$c$头牛吃$d$天。

二、草每天增长的速度

我们就假设:每头牛每天吃一份,那么: 第一种情况,这$a$头牛在$b$天中,吃了$a*b$份

同理,第二种情况,吃了$cd$份 由于数据不同,$ab$与$c*d$两乘积一定有差

我们就用$(ab-cd)/(b-d)$或$(cd-ab)/(d-b)$

为什么这样做呢?我们想一想,$a$头牛与$c$头牛吃的量差在哪儿呢? 原有草量?肯定不是,同一片牧场嘛!

那肯定是$a$头牛与$c$头牛吃的 天数的差异

为什么呢,因为草也是按一定的速度增长的,你吃的天数多,累计增加的草量也多。 怎么求出这个增加速度呢?就是我们之前提出的那个式子啦 $ab-cd$或$cd-ab$即两种情况吃的总草量的 差值(这个差值就是由草的增长造成的),$b-d$或$d-b$即两种情况吃的天数差值,二者前者除以后者,便是 草每天增长的速度啦,我们将这个结果先表示为e

三、 原草量

接着,我们就可以用$ab-be$或$cd-de$来求出原有草量了。

四、常规问法

做到这个地步,题目大致会有$3$种问法:

1、给你$n$头牛,求他们可以吃多少天

  • 如果$n≤e$,肯定可以吃无数天了(每天增长的量都吃不完,草量肯定是持续在增长的,越吃越多)
  • 如果$n>e$,那么,我们就先派$e$头牛去吃增加的草量(每天都把增加的草量刚好吃完,这样原有草量一旦吃完,草场的草也就吃完了),而剩下的$n-e$头牛,就去吃原有草量,能吃的天数便是原有草量除以剩下的牛一天能吃的总量就可以了,即a*b-b*e/(n-e)

2、给你$n$天,求多少头牛可以刚好$n$天吃完

与之前一样,还是要先派$e$头牛去吃增加的草量(把增加的把控的死死的,随时待命),接着,只要把原有草量在$n$天之内吃完就好了,需要派的牛即为$ab-be/n$,加上吃增加草量的$e$头牛,答案就是$(ab-be)/n+e$。

3、问这个草场最多可供多少头牛一直吃下去

这种问题只要你思路想到了,其实过程很简单 你想想,牛想要一直吃下去,每天吃的总草量就得≤每天增加的草量,那么,答案便是$e$(向下取整,保证答案为整数)头牛了。