当前位置:首页 > 语法入门 > 分支结构 > 正文
NOI1.4-12骑车与走路
4049+

题目大意:走路速度比较慢,骑车速度较快,但开锁锁车会浪费时间,已知路程,请问走路快还是骑车快?

题目描述

在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。

输入

输入一行,包含一个整数,表示一次办事要行走的距离,单位为米。

输出

输出一行,如果骑车快,输出一行”Bike”;如果走路快,输出一行”Walk”;如果一样快,输出一行”All”。

样例输入

120

样例输出

Bike

解题思路

计算出走路和骑车所需要的时间,时间短的比较快。时间=路程/速度,可能会有小数,用double类型也会出现问题。因此,能不用小数就不用小数。解方程s/1.2 = 50 + s/3.0,解出的s为整数,如果输入的数据是s,那么输出All,如果小于s,那么走路更快,否则骑车更快。

程序实现

80分:小数存储有精度丢失,不能直接判断两个小数是否相等,比较大小时也有可能出现误差。

小数大小比较,应该算上误差,如比较相等,只有两个数相差不超过0.000001(10的-6次方、1e-6),那么就认为他们相等;比较大小,要判断一个数a比另外一个数b大,那么他至少比另外一个数大0.000001,即a > b + 1e-6,这样才是真的大;同理,要判断一个数a比另外一个数b小,那么另外一个数至少比他大0.000001,即b > a + 1e-6。

当然,我们也可以考虑不用小数,完全避免精度问题。通过解方程,得到s=100时,两者一样快,距离小于100走路快,大于100骑车快。这样,我们就可以直接判断整数s的大小,决定选择哪一种方案。

NOI1.4-12骑车与走路:等您坐沙发呢!

发表评论

您必须 [ 登录 ] 才能发表留言!