题目链接
题目描述
小美一周(7天)的工作时长根据每日最高气温 的不同而变化,规则如下:
- 若
,工作 4 小时。
- 若
,工作 5 小时。
- 若
,工作 6 小时。
- 若
,工作 8 小时。
输入:
- 一行输入 7 个整数,分别表示从周一到周日的最高气温。
输出:
- 输出一个整数,代表小美在这一周内的总工作时长。
解题思路
本题是一个简单的模拟题,我们只需要根据题目给定的规则计算一周的总工作时长。
-
初始化:定义一个整型变量
total_hours
并初始化为 0,用于累计总工作时长。 -
循环读取:题目明确指出输入为 7 天的气温,因此我们可以使用一个循环,迭代 7 次。
-
条件判断:在循环的每一次迭代中,我们读取当天的气温
,然后使用
if-else if-else
结构来判断所在的区间:
- 如果
,将
total_hours
加上 4。 - 如果
(并且不满足前一个条件,即
),将
total_hours
加上 5。 - 如果
(并且不满足前两个条件,即
),将
total_hours
加上 6。 - 否则 (即
),将
total_hours
加上 8。
- 如果
-
输出结果:循环 7 次结束后,
total_hours
中存储的就是一周的总工作时长,直接输出该变量的值即可。
代码
#include <iostream>
using namespace std;
int main() {
int total_hours = 0;
// 循环7次,代表一周7天
for (int i = 0; i < 7; ++i) {
int temp;
cin >> temp;
if (temp > 40) {
total_hours += 4; // 温度大于40,工作4小时
} else if (temp >= 38) {
total_hours += 5; // 38 <= 温度 <= 40,工作5小时
} else if (temp >= 36) {
total_hours += 6; // 36 <= 温度 <= 37,工作6小时
} else {
total_hours += 8; // 温度小于36,工作8小时
}
}
cout << total_hours << '\n';
return 0;
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int totalHours = 0;
// 循环7次,代表一周7天
for (int i = 0; i < 7; i++) {
int temp = sc.nextInt();
if (temp > 40) {
totalHours += 4; // 温度大于40,工作4小时
} else if (temp >= 38) {
totalHours += 5; // 38 <= 温度 <= 40,工作5小时
} else if (temp >= 36) {
totalHours += 6; // 36 <= 温度 <= 37,工作6小时
} else {
totalHours += 8; // 温度小于36,工作8小时
}
}
System.out.println(totalHours);
}
}
# 读取一行7个温度,并转换为整数列表
temps = list(map(int, input().split()))
total_hours = 0
# 遍历温度列表
for temp in temps:
if temp > 40:
total_hours += 4 # 温度大于40,工作4小时
elif temp >= 38:
total_hours += 5 # 38 <= 温度 <= 40,工作5小时
elif temp >= 36:
total_hours += 6 # 36 <= 温度 <= 37,工作6小时
else:
total_hours += 8 # 温度小于36,工作8小时
print(total_hours)
算法及复杂度
- 算法:模拟。直接根据题目描述的逻辑进行计算。
- 时间复杂度:
。因为输入总是 7 个整数,循环次数是固定的,所以执行时间是一个常数。
- 空间复杂度:
。我们只使用了少数几个变量来存储总时长和临时温度,所需空间是固定的。Python代码中虽然存储了7个温度的列表,但数量级仍是常数。