1 条题解

  • 0
    @ 2026-2-1 15:42:36
    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
        cout << setprecision(1) << fixed; // 设置输出格式,保留1位小数
        int n; // 存储输入的行程公里数
        cin >> n; // 输入第一组行程公里数
        // 多组输入处理,直到输入n=0时结束
        while (n) {
            double a = 0; // 存储当前行程的最小花费
            if (n <= 4) 
                a = 10; // [1] 行程≤4公里,直接收取起步价10元
            else if (n > 4 && n <= 8) 
                a = 10 + (n - 4) * 2; // [2] 4<行程≤8公里,起步价+超出4公里部分每公里2元
            else if (n > 8 && n <= 13) 
                a = 18 + (n - 8) * 2.4; // [3] 8<行程≤13公里,前8公里18元+超出部分每公里2.4元
            else if (n % 8 == 0) 
                a = (n / 8) * 18; // [4] 行程是8的倍数,分成n/8段,每段8公里收费18元
            else if (n % 8 > 4) 
                a = (n / 8) * 18 + 10 + (n % 8 - 4) * 2; // [5] 剩余公里数>4,单独坐一段更划算
            else 
                a = (n / 8) * 18 + n % 8 * 2.4; // [6] 剩余公里数≤4,合并到最后一段按2.4元/公里计算
            
            // 输出处理:如果花费是整数则输出整数,否则保留一位小数
            if (a == int(a)) 
                cout << int(a) << endl;
            else 
                cout << a << endl;
            
            cin >> n; // 输入下一组行程公里数
        }
        return 0;
    }
    
    • 1

    信息

    ID
    1028
    时间
    1000ms
    内存
    256MiB
    难度
    1
    标签
    递交数
    2
    已通过
    1
    上传者