1 条题解

  • 0
    @ 1977-5-26 0:27:02

    练21.5  打车费用

    解题思路

    用角为单位精确计费:起步 60 角,2~10 千米每千米 18 角,10 千米以上 27 角;等候每完整 3 分钟再加 10 角。

    正确性说明

    路程拆为互斥收费段,等待费是独立整数单位,两者相加得到总角数。整除 10 可判定是否需要小数。

    易错点

    等候不足三分钟舍去;整数费用不输出 .0。

    复杂度

    输入规模固定,时间 O(1),额外空间 O(1)。

    参考代码(C++11)

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
        long long d, t;
        cin >> d >> t;
        long long fee =
            60 + max(0LL, min(d, 10LL) - 2) * 18 + max(0LL, d - 10) * 27 + t / 3 * 10;
        cout << fee / 10;
        if (fee % 10)
            cout << "." << fee % 10;
        cout << "\n";
        return 0;
    }
    
    • 1

    信息

    ID
    148
    时间
    1000ms
    内存
    64MiB
    难度
    进阶
    标签
    递交数
    0
    已通过
    0
    上传者