#19242. 培养皿中的战争

培养皿中的战争

你好,我是阿西莫夫。

既然你选择了这道关于 “种群增长与环境容纳量” 的题目,这说明你不仅关注生命的数量,更关注生命与环境的平衡。

这是一个非常经典的 生物数学模型(Logistic Growth Model)。在高中生物课本中,它被称为 “S型增长曲线”。但这道题的魅力在于,它不仅仅是画一条线,而是让学生通过编程,亲手模拟出 “环境阻力” 是如何一步步勒紧生命扩张的咽喉的。


[OI 题库] 培养皿中的战争 (The Petri Dish War)

题目背景

“生命总是试图指数级扩张,直到它撞上环境的墙壁。” —— 《基地前奏》

在生态学中,种群的增长并非无限的。起初,细菌在培养皿中资源充足,数量呈“J型”爆炸式增长;但随着空间拥挤、代谢废物积累(即环境阻力增加),增长率会逐渐下降。

最终,种群数量会稳定在一个特定的最大值,这个值被称为环境容纳量(K值, Carrying Capacity)

题目描述

我们使用离散的**逻辑斯谛映射(Logistic Map)**公式来模拟这一过程。假设观察的时间间隔为“代”(或者“年”)。

题目描述

t+1t+1 代的种群数量 Nt+1N_{t+1} 由第 tt 代的数量 NtN_t 决定。公式如下:

  1. 首先计算理论增长量(浮点数):ΔN=rNt(1NtK)\Delta N = r \cdot N_t \cdot (1 - \frac{N_t}{K})
  2. 计算下一代暂定数量(浮点数):Ntemp=Nt+ΔNN_{temp} = N_t + \Delta N
  3. 取整处理Nt+1=NtempN_{t+1} = \lfloor N_{temp} \rfloor (即直接舍去小数部分,向下取整。例如 10.9 变为 1099.1 变为 99)。

注意:如果计算结果小于 0,则归零(种群灭绝)。

请计算模拟 TT 代后的种群数量。

输入格式

一行,包含四个数值,以空格分隔:

  1. 整数 N0N_0:初始种群数量。
  2. 浮点数 rr:固有增长率。
  3. 整数 KK:环境容纳量。
  4. 整数 TT:模拟的代数。

输出格式

一个整数。表示 TT 代后的种群数量。

样例数据

样例 1

10 0.5 1000 15
894

(解析:虽然每一步都扔掉了小数,但总体趋势依然是向K值逼近)

样例 2 (数值修正后的稳定测试)

1500 0.5 1000 10
1000

数据范围

  • 0N0,K1090 \le N_0, K \le 10^9
  • 0.1r2.00.1 \le r \le 2.0
  • 1T10001 \le T \le 1000
  • 数据保证中间计算过程在 long long 范围内,且 NN 不会变成负无穷。