题解
旅游费用
1 条题解
-
0
解题思路
这道题是一道典型的“分段计费”问题,就像坐出租车一样,人数不同,每个人的单价就不同。
我们先读入人数 n,然后判断人数属于哪个区间:
- 如果 n 小于等于 5(也就是 5 人及以下),按照散客标准,每人 300 元,总费用 = n × 300;
- 如果 n 大于 5,按照团队标准,每人 280 元,总费用 = n × 280。
为什么先判断人数呢?因为“超过5人”和“5人以下”这两句话已经把人数分成了两个区间。特别要注意边界:题目说“5人以下(含5人)”,所以 n = 5 时也要用 300 元每人,不能搞错。这类题目最常见的错误就是把 n = 5 这个边界放错了区间。记住口诀:“含”字表示这一端要包含进来,“超过”表示这一端不包含。
确定好属于哪个区间后,用 if-else 语句分别计算总费用(人数 × 每人单价),最后输出即可。
参考代码
#include using namespace std;
int main() { int n; // n 表示去旅游的人数 cin >> n; // 读入人数
int ans; // ans 用来保存最终的总费用 if (n <= 5) { // 5人以下(含5人)按散客标准 ans = n * 300; // 每人300元,总费用 = 人数 × 单价 } else { // 超过5人按团队标准 ans = n * 280; // 每人280元,总费用 = 人数 × 单价 } cout << ans << endl; // 输出总费用 return 0;}
复杂度分析
题目中 n 表示人数,最大是 500。这个程序只做一次判断和一次乘法运算,不管 n 是 1 还是 500,运算次数都一样多,所以时间复杂度是 O(1)。程序里只用了两个 int 变量存放人数和费用,占用的空间固定,空间复杂度同样是 O(1)。
- 1