充电总时间计算 | 青训营X豆包MarsCode 技术训练营

46 阅读2分钟

题目

小R有n部电脑,每部电脑的电池容量分别为ai​。她可以使用两种不同的充电方式来给电脑充电:

  1. 普通充电:每单位时间为电脑充电x单位的电量。
  2. 闪充:每单位时间为电脑充电4x单位的电量。

现在,所有电脑的电量都为零。小R希望使用闪充给所有电脑充满电,计算她需要的总充电时间。请保留结果的小数点后两位。

问题分析

  1. 普通充电: 充电速率为每单位时间充电 x 单位电量。
  2. 闪充: 充电速率为每单位时间充电 4 * x 单位电量。

根据题目要求,所有的电脑初始电量都为零,且充电方式是闪充。因此,给定一台电脑的电池容量 a_i,使用闪充充电所需的时间为:

[ \text{充电时间} = \frac{a_i}{4 \times x} ]

其中 a_i 是电脑的电池容量,x 是普通充电的速率。

我们需要对所有电脑的充电时间求和,然后保留小数点后两位。

解题步骤

  1. 对每台电脑,根据电池容量和闪充的速率,计算充电时间。
  2. 累加所有电脑的充电时间。
  3. 将最终结果保留两位小数并返回。

代码实现

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'

解释

  1. 输入:

    • n 是电脑的数量。
    • x 是普通充电的速率。
    • a 是包含每台电脑电池容量的列表。
  2. 处理过程:

    • 使用闪充时,计算每台电脑充电所需的时间 a_i / (4 * x)
    • 将所有电脑的充电时间累加起来。
  3. 输出:

    • 最后,将总充电时间保留两位小数,返回结果。

测试

  • 测试用例 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'

总结

这个代码根据题意实现了对每台电脑充电时间的计算,并正确地将总时间格式化为保留两位小数的字符串。