【题目描述】
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供x亿人生活a年,或供y亿人生活b年。
为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?
【输入】
一行,包括四个正整数x,a,y,b,两个整数之间用单个空格隔开。x>y,a<b,ax<by,各整数均不大于10000。
【输出】
一个实数z,表示地球最多养活z亿人,舍入到小数点后两位。
【输入样例】
110 90 90 210
【输出样例】
75.00
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
double x, a, y, b;
cin >> x >> a >> y >> b;
double res = ((y * b - a * x) / (b - a));
cout << fixed << setprecision(2);
cout << res << endl;
return 0;
}
解释:
可以设总资源能养的人数为S,资源每年增长能养活的人数为RS+a*R=x*a
S+b*R=y*b
化简之后也就是R=(yb-ab)/(a-b)
R也就是我们要求的每年的资源最多能养活的人数,只有当增长大于等于消耗,才能可持续发展,也就是最后要求的结果.
控制输出多少位小数需要用到iomanip库.
fixed
→ 固定小数格式,不使用科学计数法。setprecision(n)
→ 小数位数(如果配合 fixed),否则表示总有效位数。