地球人口承载力估计

地球人口承载力估计


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

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

【输入】
输入只有一行,包括四个正整数x,a,y,b,整数之间用一个空格隔开。条件:x>y,a

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

【输入样例】
110 90 90 210

【输出样例】
75.00

【代码实现】

#include
#include
using namespace std;
int main()
{
     
    int x,y,a,b;
    double z;
    cin>>x>>a>>y>>b;
    z=(y*b-x*a)/(b-a);//计算最多养活的人数
    cout<<setiosflags(ios::fixed)<<setprecision(2);//保留两位小数
    cout<<z<<endl;
    return 0;
}

【解释】
用(y×b-x×a)/(b-a);来计算最多养活人数的数学原理:
(1)首先设每个人每年需要消耗的资源数为k,则
x亿人生活a年所消耗的资源总量为人口数×年数×k=x×a×k
y亿人生活b年所消耗的资源总量为y×b×k

(2)实现可持续发展,“可持续发展"的意思就是可以供养z亿人口无数年,怎么样做到呢?
人消耗的资源量是随着时间的推移不断增大的,也就是说只要有人存在,就会不断消耗地球资源,但是庆幸的是,地球资源也在不断增加,于是,当资源每年的增加量=人每年对资源的消耗量的时候,就不会担心资源被耗尽,就可以做到"可持续发展"或者说"永续发展”。

(3)所以只要求出地球新生资源每年的增长量即可
设地球现有资源为m,新生资源初始时为n—这是不能动的,一旦要消耗原始资源,就无法做到"永续发展"。
"地球上现有资源加上新生资源可供x亿人生活a年"意思就是x亿人生活a年时,地球资源将耗尽(原始资源和a年来增加的资源都会被耗尽),所以现有资源量m+新生资源初始量n+a年时间内新生资源的总的增长量=m+n+a年时间内新生资源的总的增长量=x×a×k
同理:现有资源量m+新生资源初始量n+b年时间内新生资源的总的增长量=m+n+b年时间内新生资源的总的增长量=y×b×k

(4)地球新生资源每年的增长量
=(b年时间内新生资源的总的增长量-a年时间内新生资源的总的增长量)÷(b-a)
=[(y×b×k-m-n)-(x×a×k-m-n)]÷(b-a)
=(y×b×k-x×a×k)÷(b-a)
设地球最多养活z亿人
z亿人口一年消耗的资源量=新生资源一年的增长量
z×k×1=(y×b×k-x×a×k)÷(b-a)
===>z=[(y×b×k-x×a×k)÷(b-a)]÷k=(y×b-x×a)/(b-a)

你可能感兴趣的:(编程题,C++,面试题,经验分享,面试,其他,算法,拓扑学)