题目
小R有n部电脑,每部电脑的电池容量分别为ai。她可以使用两种不同的充电方式来给电脑充电:
- 普通充电:每单位时间为电脑充电x单位的电量。
- 闪充:每单位时间为电脑充电4x单位的电量。
现在,所有电脑的电量都为零。小R希望使用闪充给所有电脑充满电,计算她需要的总充电时间。请保留结果的小数点后两位。
问题分析
- 普通充电: 充电速率为每单位时间充电
x单位电量。 - 闪充: 充电速率为每单位时间充电
4 * x单位电量。
根据题目要求,所有的电脑初始电量都为零,且充电方式是闪充。因此,给定一台电脑的电池容量 a_i,使用闪充充电所需的时间为:
[ \text{充电时间} = \frac{a_i}{4 \times x} ]
其中 a_i 是电脑的电池容量,x 是普通充电的速率。
我们需要对所有电脑的充电时间求和,然后保留小数点后两位。
解题步骤
- 对每台电脑,根据电池容量和闪充的速率,计算充电时间。
- 累加所有电脑的充电时间。
- 将最终结果保留两位小数并返回。
代码实现
def solution(n: int, x: int, a: list) -> str:
total_time = 0
for battery_capacity in a:
total_time += battery_capacity / (4 * x) # 使用闪充的时间
return f"{total_time:.2f}" # 保留两位小数
# 测试用例
if __name__ == '__main__':
print(solution(4, 1, [2, 3, 4, 5]) == '3.50') # 预期输出:'3.50'
print(solution(3, 2, [4, 6, 8]) == '2.25') # 预期输出:'2.25'
print(solution(2, 1, [10, 5]) == '3.75') # 预期输出:'3.75'
解释
-
输入:
n是电脑的数量。x是普通充电的速率。a是包含每台电脑电池容量的列表。
-
处理过程:
- 使用闪充时,计算每台电脑充电所需的时间
a_i / (4 * x)。 - 将所有电脑的充电时间累加起来。
- 使用闪充时,计算每台电脑充电所需的时间
-
输出:
- 最后,将总充电时间保留两位小数,返回结果。
测试
-
测试用例 1: 输入
(4, 1, [2, 3, 4, 5])- 充电时间为:
(2 / 4) + (3 / 4) + (4 / 4) + (5 / 4) = 0.5 + 0.75 + 1.0 + 1.25 = 3.5 - 输出
'3.50'
- 充电时间为:
-
测试用例 2: 输入
(3, 2, [4, 6, 8])- 充电时间为:
(4 / 8) + (6 / 8) + (8 / 8) = 0.5 + 0.75 + 1.0 = 2.25 - 输出
'2.25'
- 充电时间为:
-
测试用例 3: 输入
(2, 1, [10, 5])- 充电时间为:
(10 / 4) + (5 / 4) = 2.5 + 1.25 = 3.75 - 输出
'3.75'
- 充电时间为:
总结
这个代码根据题意实现了对每台电脑充电时间的计算,并正确地将总时间格式化为保留两位小数的字符串。