充电总时间计算 | 豆包MarsCode AI刷题

119 阅读1分钟

题目解析

小R有 nn 部电脑,每部电脑的电池容量分别为 a[i]a[i]。她有两种充电方式:

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

目标是: 使用 闪充 方式将所有电脑的电池充满电,计算总充电时间并保留两位小数。

解题思路

  1. 总电量

    • 首先计算所有电脑需要充电的总电量,即数组 aa 的所有元素之和:total_charge=i=1na[i]\text{total\_charge} = \sum_{i=1}^n a[i]
  2. 充电速率

    • 闪充的充电速率为 4x4x 单位每秒。
  3. 计算充电时间

    • 总充电时间为总电量除以充电速率:time=total_charge4x\text{time} = \frac{\text{total\_charge}}{4x}
  4. 格式化输出

    • 计算的时间保留两位小数,返回字符串格式的结果。

代码实现

def solution(n: int, x: int, a: list) -> str:
    # 计算总电量
    total_charge = sum(a)
    # 计算充电时间
    time = total_charge / (4 * x)
    # 保留两位小数
    return "{:.2f}".format(time)

# 测试用例
if __name__ == '__main__':
    print(solution(4, 1, [2, 3, 4, 5]) == '3.50')  # 测试用例1
    print(solution(3, 2, [4, 6, 8]) == '2.25')    # 测试用例2
    print(solution(2, 1, [10, 5]) == '3.75')      # 测试用例3

测试样例分析

样例 1

  • 输入:n=4,x=1,a=[2,3,4,5]n = 4, x = 1, a = [2, 3, 4, 5]
  • 总电量:2+3+4+5=142 + 3 + 4 + 5 = 14
  • 充电速率:4×1=44 \times 1 = 4
  • 总充电时间:144=3.50\frac{14}{4} = 3.50
  • 输出:'3.50'

样例 2

  • 输入:n=3,x=2,a=[4,6,8]n = 3, x = 2, a = [4, 6, 8]
  • 总电量:4+6+8=184 + 6 + 8 = 18
  • 充电速率:4×2=84 \times 2 = 8
  • 总充电时间:188=2.25\frac{18}{8} = 2.25
  • 输出:'2.25'

样例 3

  • 输入:n=2,x=1,a=[10,5]n = 2, x = 1, a = [10, 5]
  • 总电量:10+5=1510 + 5 = 15
  • 充电速率:4×1=44 \times 1 = 4
  • 总充电时间:154=3.75\frac{15}{4} = 3.75
  • 输出:'3.75'

总结

  1. 时间复杂度

    • 主要为数组求和的时间复杂度 O(n)O(n)
  2. 空间复杂度

    • 只使用常量额外空间,空间复杂度为 O(1)O(1)
  3. 特点

    • 该问题的核心在于简化计算,正确理解闪充速率 4x4x 并对总电量进行均摊处理即可。
    • 使用 Python 格式化输出字符串,确保结果保留两位小数。
  4. 扩展

    • 可以拓展到更复杂的场景,例如普通充电与闪充混合使用,或加入其他限制条件。