题目大意:走路速度比较慢,骑车速度较快,但开锁锁车会浪费时间,已知路程,请问走路快还是骑车快?
题目描述
在北大校园里,没有自行车,上课办事会很不方便.但实际上,并非去办任何事情都是骑车快,因为骑车总要找车、开锁、停车、锁车等,这要耽误一些时间.假设找到自行车,开锁并车上自行车的时间为27秒;停车锁车的时间为23秒;步行每秒行走1.2米,骑车每秒行走3.0米。请判断走不同的距离去办事,是骑车快还是走路快。
输入
输出
样例输入
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的大小,决定选择哪一种方案。