#19313. 生态系统的能量金字塔
生态系统的能量金字塔
你好!我们继续探索高中生物与信息学的结合。
GESP 4级(CSP-J 普及组 T1/T2 难度)主要考察浮点数运算、循环结构、逻辑判断以及简单的数学模拟。
这次我们选取高中生物必修三《稳态与环境》中 生态系统(Ecosystem) 的核心考点——能量流动(Energy Flow)。
题目:生态系统的能量金字塔 (Energy Pyramid of Ecosystem)
【背景知识讲解】
在高中生物必修三中,我们学习了生态系统的能量流动。
- 单向流动,逐级递减:能量只能从第一营养级(生产者)流向第二营养级(初级消费者),再流向第三营养级……不可逆转,且在每一级都会大量流失。
- “10%定律”:一般情况下,相邻两个营养级之间的能量传递效率大约在 10% ~ 20% 之间。剩下的 80%~90% 的能量去哪了?
- 一部分被生物自身的呼吸作用消耗掉了(以热能形式散失)。
- 一部分被分解者利用了(遗体残骸)。
- 一部分未被利用。
- 能量金字塔:因为能量逐级递减,所以营养级越高,拥有的总能量越少,生物数量通常也越少,形成一个金字塔形状。
【题目描述】
你正在模拟一个简化的线性食物链,该食物链共有 个营养级(编号 到 )。
- 第 级是生产者(如草)。
- 第 级是初级消费者(如兔子)。
- ...
- 第 级是最高级消费者(如老鹰)。
系统给定第 级(生产者)固定的太阳能输入总量 。 从第 级流向第 级时,需要经历两个过程:
- 自身消耗:第 级生物会因呼吸作用消耗掉固定的能量 。
- 传递效率:剩下的能量中,只有 的比例能被第 级成功同化(获取)。
计算公式:
生存判断: 在传递过程中,如果某一级生物拥有的能量 小于等于 0,说明能量耗尽,该营养级及之后的所有生物都会灭绝,食物链中断。
请计算:最高营养级(第 级)最终能获得的能量是多少?
【输入格式】
第一行包含两个数:整数 和浮点数 ,分别表示营养级的层数和第一级获得的初始太阳能。 接下来 行,每行包含两个数:整数 和整数 。
- 第 行的数据()描述的是从第 级传递到第 级的参数:自身消耗量和传递比例(百分比)。
【输出格式】
如果食物链中途断裂(能量 ),输出 -1。
否则,输出第 级获得的能量值,结果四舍五入保留整数。
【样例数据】
输入:
4 10000.0
1000 15
500 20
100 10
输出:
7
样例解释: 共有 4 个营养级,初始能量 10000。
- 第1级 第2级:
- 消耗 ,剩余 。
- 传递 。
- 。
- 第2级 第3级:
- 消耗 ,剩余 。
- 传递 。
- 。
- 第3级 第4级:
- 消耗 ,剩余 。
- 传递 。
- 。
- 等等,样例输出写的是 17?让我再算一遍。
- 10000 - 1000 = 9000; *0.15 = 1350。
- 1350 - 500 = 850; *0.2 = 170。
- 170 - 100 = 70; *0.1 = 7。
- 结果是 7。
【数据范围】
- 对于 100% 的数据:。
- 。
- 。
- 。
- 最终结果在
int范围内。
一、 思路提示
- 浮点数的使用:
- 能量值在计算过程中会变成小数(比如乘以 0.15),所以必须使用
double类型来存储能量 。 - 输入 时也要用
double。
- 能量值在计算过程中会变成小数(比如乘以 0.15),所以必须使用
- 循环结构:
- 食物链有 层,意味着会发生 次传递。
- 我们可以写一个循环
for(int i = 1; i < N; i++)。
- 生存检查:
- 在计算每一级之前或之后,都需要检查当前能量。
- 公式逻辑:先减去消耗 ,此时要判断是否 。如果还活着,再乘以 。
- 四舍五入:
- 题目要求输出整数。C++ 中
(int)(value + 0.5)是处理正数四舍五入的常用技巧。或者使用round()函数。
- 题目要求输出整数。C++ 中
二、 预备知识点总结
- 数据类型:
double的定义与输入输出。 - 算术运算:理解百分比计算()。
- 类型转换:浮点数转整数(四舍五入)。
- 循环与中断:
break的使用(一旦灭绝立即停止)。
三、 启发式教学:草稿纸上的推理过程
教练:“我们把能量想象成水流,流过一层层的梯田。”
- 初始:
- “最大的水池(生产者)里有 10000 升水。”
- 第一层流动:
- “流向下一层前,先蒸发了 1000 升(消耗)。剩 9000。”
- “这时候水流还够吗?够(>0)。”
- “管道比较窄,只有 15% 能流下去。。”
- “第二层水池收到 1350。”
- 第二层流动:
- “蒸发 500。剩 。”
- “流下去 20%。。”
- “第三层收到 170。”
- 极端情况演示:
- “假设第三层消耗 200。。”
- “水干了!后面的老鹰(第四层)肯定没水喝了,直接饿死。输出 -1。”
四、 读题关键词总结
- “浮点数” / “四舍五入” 使用
double,最后用round或+0.5强转。 - “小于等于 0” 灭绝判断条件。
- “ 个营养级” 注意循环次数是 次(因为是传递过程,4个点只有3条边)。
这道题将浮点数运算与生态系统的能量流动结合,既考察了编程基础,又强化了“能量逐级递减”的生物学概念。对于 GESP 4 级学生来说,这是练习 double 类型和循环控制的绝佳题目。