PTA-游客检票-C语言变量及简单数据类型

作者 海洋饼干叔叔

单位 重庆大学

题目描述
假设张家界景区的游客抵达检票口的速度是恒定的。某国庆长假日清晨景区开门时检票口已积聚了一定数量的游客,且随时间流逝,不断有新的游客抵达。如果打开8个检票口,m分钟刚好可以完成全部游客的检票放行;如果使用6个检票口,则需要n (n>m)分钟才能完成。请编程计算:如果使用10个检票口,需要多少时间才能将景区入口的待检票人数清零?

【分析】

这是小学奥数中著名的“牛吃草”问题。现假设每个检票口每分钟可以完成1份游客的检票放行任务。设景区开门时积聚的游客数量为x份,设每分钟有y份游客抵达检票口。然后列出方程组,根据方程组求解x,y。

然后,设使用10个检票口时,需要z分钟清零,根据x,y列方程,求出z。

输入格式:

m
n

说明:m,n为整数且n>m,且该输入确保问题有解。

输出格式:

原有排队游客份数:A, 每分钟新到游客份数:B, 10口同开需C分钟清零待检票游客.

说明:A, B, C均为保留1位小数的浮点数。

输入样例:

180
300

输出样例:

Original number of visitors: 900.0
New arriavlas per minute: 3.0
Check time when 10 gates are opened: 128.6

注意:从数学角度上看,900.0, 30.0均为份数,不是游客人数。

代码长度限制

16 KB

时间限制

400 ms

内存限制

64 MB

#include <stdio.h>

int main()
{
	int m, n;
	float A, B, C;
	scanf("%d%d", &m, &n);
	if (n > m)
	{
		B = (6.0 * n - 8.0 * m) / (n - m);
		A = 2.0 * m * n / (n - m);
		C = A / (10.0 - B);
	}
	printf("Original number of visitors : %.1f\n", A);
	printf("New arriavlas per minute : %.1f\n", B);
	printf("Check time when 10 gates are opened : %.1f\n", C);
	return 0;
}

补充一下:

[牛吃早回题]'牛吃草'问题是大科学家牛顿提出的问题,也叫'牛顿问题'。

这类问题的难点在于要考虑草边吃边长这个因素。典型牛吃草问题的条件是假设草的生长速度固定不变,不同头数的牛吃光同一片草地所需的天数各不相同,求若干头牛吃这片草地可以吃多少天。由于吃的天数不同,草又是天天在生长的,所以草的存量随着吃的天数不断地变化。

[常用公式]

(1)草的生长速度=(对应的牛头数×吃的较多天数-相应的牛头数×吃的较少天数) ÷ (吃的较多天数-吃的较少天数) ;

(2)原有草量=牛头数x吃的天数-草的生长速度x吃的天数;

(3)吃的天数=原有草量÷(牛头数-草的生长速度) ;

(4)牛头数=原有草量÷吃的天数+草的生长速度。

这四个公式是解决牛吃草问题的基础。

此题中:

原有排队游客份数:A , A = 6.0 * n - B * n或者A = 8.0 * m- B * m,再将B代入A中,化简就能得到代码中的式子;B为公式一,C为公式三。
 

  • 13
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值