信息学奥赛一本通 1005:地球人口承载力估计题目考点及解题思路

信息学奥赛   2023-05-31 11:55   239   0  

1005:地球人口承载力估计

时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。

为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?

【输入】

一行,包括四个正整数x,a,y,b,两个整数之间用单个空格隔开。x>y,a<b,ax<by,各整数均不大于10000。

【输出】

一个实数z,表示地球最多养活z亿人,舍入到小数点后两位。


【输入样例】

110 90 90 210

【输出样例】

75.00


题目考点

保留x位小数输出浮点型数字a的写法:

cout<<fixed<<setprecision(x)<<a;

printf("%.xf", a);

声明浮点型变量,单精度浮点型float,双精度浮点型double

输入输出浮点型变量

本题考查列方程及解方程

【解题思路】

已知地球上现有资源加上新生资源可供 x x x亿人生活 a a a年,或供 y y y亿人生活 b b b年,地球最多养活 z z z亿人。

设地球每年新生资源为 n n n,已有资源为 m m m,1亿人每年消耗资源 p p p。

则有方程组:

x ∗ p ∗ a = m + a ∗ n y ∗ p ∗ b = m + b ∗ n x*p*a = m + a*n\\ y*p*b = m + b*n x∗p∗a=m+a∗n

y∗p∗b=m+b∗n

使资源不枯竭,每年消耗的资源必须小于等于再生的资源,有

z ∗ p < = n z*p <= n z∗p<=n

即 z < = n / p z <= n/p z<=n/p 地球最多能养活的人口数即为 n / p n/p n/p

方程组两边除以p,得:

x ∗ a = m / p + a ∗ n / p y ∗ b = m / p + b ∗ n / p x*a = m/p + a*n/p\\ y*b = m/p + b*n/p x∗a=m/p+a∗n/p

y∗b=m/p+b∗n/p

两方程相减,得:

x ∗ a − y ∗ b = ( a − b ) n / p n / p = ( x ∗ a − y ∗ b ) / ( a − b ) x*a - y*b = (a-b)n/p\\ n/p = (x*a - y*b)/(a-b) x∗a−y∗b=(a−b)n/p

n/p=(x∗a−y∗b)/(a−b)


参考答案:信息学奥赛一本通 1005:地球人口承载力估计题目考点及解题思路