本文为新手学习C++的练习记录
题目
题目描述
假设地球上的新生资源按恒定速度增长。照此测算,地球上现有资源加上新生资源可供 x x x 亿人生活 a a a 年,或供 y y y 亿人生活 b b b 年。
为了能够实现可持续发展,避免资源枯竭,地球最多能够养活多少亿人?
输入格式
一行,包括四个正整数 x , a , y , b x, a, y, b x,a,y,b,两个整数之间用单个空格隔开。
输出格式
一个实数 z z z,表示地球最多养活 z z z 亿人,舍入到小数点后两位。
样例 #1
样例输入 #1
110 90 90 210
样例输出 #1
75.00
提示
对于 100 % 100 \% 100% 的数据, 1 ≤ x , a , y , b ≤ 10 4 1 \le x, a, y, b \le {10}^4 1≤x,a,y,b≤104, x > y x > y x>y, a < b a < b a<b, a x < b y a x < b y ax<by。
解答
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
float x, a, y, b;
cin >> x >> a >> y >> b;
float z = (b*y-a*x)/(b-a);
cout<< fixed << setprecision(2) << z << endl;
return 0;
}
代码注意事项
解答思路
假设每人每年需要的资源
为m
,地球每年能够新生成的资源
为n
。
题目的要求是,求能够保证资源不枯竭的最大的人数z
,这个题设等价于,地球每年新生成的资源最大养活的人数
,只有这样,地球资源才不会枯竭,不需要动用老本。
x
x
x个人可以生活
a
a
a年,期间耗费的总资源是
a
x
m
axm
axm;
y
y
y个人可以生活
b
b
b年,期间耗费的总资源是
b
y
m
bym
bym;
生活
b
b
b年总的资源比
a
a
a年总的资源多
(
b
−
a
)
n
(b-a)n
(b−a)n,由于
n
=
z
m
n=zm
n=zm,故
地球每年生成的新资源可养活
z
=
b
y
−
a
x
b
−
a
z=\frac{by-ax}{b-a}
z=b−aby−ax人。
C++运算法则
不知道大家有没有注意到,在题目中说明了
x
x
x,
a
a
a,
y
y
y,
b
b
b为正整数,但是我在代码里没有定义int
,而是定义了float
,这是因为int
与int
的除法是整除,比如
3
/
2
=
1
3/2=1
3/2=1,而不是我们以为的
3
/
2
=
1.5
3/2=1.5
3/2=1.5。
但是同样的式子,如果我写成
3.0
/
2
3.0/2
3.0/2或者
3
/
2.0
3/2.0
3/2.0或者
3.0
/
2.0
3.0/2.0
3.0/2.0那么运算结果都会为
1.5
1.5
1.5。
因此,为了避免麻烦和错误,我将输入的几个量都定义为浮点数
,相互之间进行浮点数的运算,这样就对了。