描述
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。
为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?
输入
一行,包括四个正整数x,a,y,b,两个整数之间用单个空格隔开。x>y,a<b,ax<by,各整数均不大于10000。
输出
一个实数z,表示地球最多养活z亿人,舍入到小数点后两位。
输入样例
110 90 90 210
输出样例
75.00
来源
信息学奥赛一本通
解题思路
设1亿人每年消耗资源consume,地球每年增长资源grow,现有资源now
z * consume = grow → z = grow / consume
now + a * grow = x * consume * a
now + b * grow = y * consume * b
两式相减
grow * ( a - b ) = consume * ( x * a - y * b )
grow / consume = ( x * a - y * b ) / ( a - b )
z = ( x * a - y * b ) / ( a - b )
代码
#include<cstdio>
int main()
{
int x,a,y,b;
float z;
scanf("%d%d%d%d",&x,&a,&y,&b);
z=(y*b-x*a)/(b-a)*1.0; //整型相除不能得出实型数,但整型与实型运算可以得出实型数,所以 ×1.0
printf("%.2f",z);
return 0;
}