[202403-C]出租车
题目描述
某市的出租车收费标准为:
- 公里数为整数。
- 在 333 公里内起步价为 121212 元;
- 超出 333 公里但不超过 202020 公里的部分每公里单价为 2.52.52.5 元;
- 超出 202020 公里的部分每公里单价为 3.53.53.5 元。
- 如果是在深夜用车,则在上述收费标准基础上加收 30%30\%30% 的费用。
现在小明有 sss 元,并且知道是否深夜用车,请问小明最远可以走多少公里?
输入格式
输入共一行,包含一个最多带有一位小数的浮点数 sss 和一个整数 ttt,用空格隔开。其中 sss 表示小明拥有的钱,ttt 为 000 或 111,表示是否深夜用车,t=0t=0t=0 表示非深夜用车,t=1t=1t=1 表示深夜用车。
输出格式
输出一个整数,表示小明最远可以走多少公里。
样例 #1
样例输入 #1
93.7 1
样例输出 #1
25
样例 #2
样例输入 #2
22 0
样例输出 #2
7
样例 #3
样例输入 #3
12 1
样例输出 #3
0
提示
数据范围
对于 20%20\%20% 的测试数据,0≤s<120\le s < 120≤s<12。
对于另外 20%20\%20% 的测试数据,t=0t=0t=0 且 12≤s≤54.512\le s \le 54.512≤s≤54.5。
对于另外 20%20\%20% 的测试数据,t=1t=1t=1 且 18≤s≤70.918\le s \le 70.918≤s≤70.9。
对于所有的测试数据,t=0t=0t=0 或者 t=1t=1t=1,且 0≤s≤2000\le s \le 2000≤s≤200。
🚖 题目解析:出租车收费计算最远公里数
🔍 思路分析:
- 起步价覆盖前 3 公里,费用固定 12 元。
- 超出 3 公里但不超过 20 公里部分,单价 2.5 元/公里。
- 超出 20 公里部分,单价 3.5 元/公里。
- 深夜加收 30%(即乘以 1.3)。
求“最远公里数”即最大整数公里数 ddd 满足:
总费用 ≤ 小明的钱 sss。
💡 解题步骤:
- 先根据是否深夜,调整单价和起步价:
- 起步价:12×factor12 \times factor12×factor
- 第二阶段单价:2.5×factor2.5 \times factor2.5×factor
- 第三阶段单价:3.5×factor3.5 \times factor3.5×factor
其中 factor=1.3factor = 1.3factor=1.3 if 深夜,否则 1.0。
- 从大到小判断能走多少公里:
- 最远不超过200公里,直接从0到200枚举即可。
- 判断花费计算公式(公里数 ddd):
- d≤3d \le 3d≤3 时,总价 = 起步价
- 3<d≤203 < d \le 203<d≤20 时,总价 = 起步价 + (d - 3) * 第二阶段单价
- d>20d > 20d>20 时,总价 = 起步价 + (20 - 3) * 第二阶段单价 + (d - 20) * 第三阶段单价
📄 C++代码实现:
#include <iostream>
using namespace std;
int main() {
double s; // 小明拥有的钱
int t; // 是否深夜 0/1
cin >> s >> t;
double factor = (t == 1) ? 1.3 : 1.0;
double startPrice = 12.0 * factor;
double price2 = 2.5 * factor;
double price3 = 3.5 * factor;
int maxDistance = 0;
for (int d = 0; d <= 200; d++) { // 枚举距离,最大200公里
double cost = 0.0;
if (d == 0) {
cost = 0; // 不走路,不花钱
} else if (d <= 3) {
cost = startPrice;
} else if (d <= 20) {
cost = startPrice + (d - 3) * price2;
} else {
cost = startPrice + (20 - 3) * price2 + (d - 20) * price3;
}
if (cost <= s) {
maxDistance = d;
} else {
break; // 超出钱数,后面不用再算了
}
}
cout << maxDistance << endl;
return 0;
}
🏆 样例验证:
- 输入:
93.7 1
输出:25
- 输入:
22 0
输出:7
- 输入:
12 1
输出:0