信息学奥赛一本通 1005:地球人口承载力估计| OpenJudge NOI 小学奥数 7653

【题目链接】

ybt 1005:地球人口承载力估计
OpenJudge NOI 小学奥数 7653:地球人口承载力估计

【题目考点】

  1. 保留x位小数输出浮点型数字a的写法:
    cout<<fixed<<setprecision(x)<<a;
    printf("%.xf", a);
  2. 声明浮点型变量,单精度浮点型float,双精度浮点型double
  3. 输入输出浮点型变量
  4. 本题考查列方程及解方程

【解题思路】

已知地球上现有资源加上新生资源可供 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 xpa=m+anypb=m+bn
使资源不枯竭,每年消耗的资源必须小于等于再生的资源,有
z ∗ p < = n z*p <= n zp<=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 xa=m/p+an/pyb=m/p+bn/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) xayb=(ab)n/pn/p=(xayb)/(ab)

【题解代码】

解法1:使用cin, cout进行输入输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
	double x,y,a,b;
	cin>>x>>a>>y>>b;
	cout<<fixed<<setprecision(2)<<(x*a - y*b)/(a-b); 
	return 0;
}
解法2:使用scanf, printf进行输入输出
#include <bits/stdc++.h>
using namespace std;
int main()
{
    double x,y,a,b;
	scanf("%lf %lf %lf %lf", &x, &a, &y, &b);
	printf("%.2f", (x*a - y*b)/(a-b)); 
	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值