骑车与走路

GitHub跳转原题关系图返回列表

将两种时间同乘 6 后用整数比较骑车、步行和相等情况。

OJ: noi_openjudge

题目 ID: ch0104-12

难度:入门

标签:数学条件判断python

日期: 2026-07-30 23:01

题意

步行速度为 1.2 米/秒,骑车速度为 3 米/秒且额外耗时 50 秒,比较哪种方式更快。

思路

步行时间为 5d/65d/6,骑车时间为 d/3+50d/3+50。两边同乘 6 后比较 5*d2*d+300,全程使用整数,避免浮点数相等比较。

代码

Python代码

python
distance = int(input())

# 把步行和骑车时间同乘 6 后,比较 5*distance 与 2*distance+300。
walk_scaled = 5 * distance
bike_scaled = 2 * distance + 300

if bike_scaled < walk_scaled:
    print("Bike")
elif bike_scaled > walk_scaled:
    print("Walk")
else:
    print("All")

C++代码

cpp
#include <cstdio>
int main(){
    int a,b;
    scanf("%d",&a);
    double walk_time = a / 1.2;
    double bike_time = a / 3.0;
    bike_time += 23;
    bike_time += 27;
    if( bike_time == walk_time)
        printf("All");
    else if ( bike_time > walk_time)
        printf("Walk");
    else {
        printf("Bike");
    }
    return 0;
}

复杂度

时间复杂度和额外空间复杂度均为 O(1)O(1)

总结

比较含小数的公式时,可先消去分母,把问题转为精确整数比较。