[简单题 Python求解] 充电总时间计算| 豆包MarsCode AI 刷题

225 阅读3分钟

充电总时间计算

问题描述

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

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

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


测试样例

样例1:

输入:n = 4 ,x = 1 ,a = [2, 3, 4, 5]
输出:'3.50'

样例2:

输入:n = 3 ,x = 2 ,a = [4, 6, 8]
输出:'2.25'

样例3:

输入:n = 2 ,x = 1 ,a = [10, 5]
输出:'3.75'


分析题目:

根据题目描述我们发现:
  • 每块电池的容量为aia_i,需要将每块电池的电量从0充到满电。
  • 只使用闪充进行充电,闪充是普通充电速度的4倍
  • 结果保留两位小数

解题思路:

根据样例输入和输出的内容我们发现:
  • 充电是一台一台充的,充电时长与电池总容量有关,我们只需要求出电池总容量除以充电速率就可以求出结果。

  • 将结果输出时只保留两位小数,就可以输出最终答案啦


解题步骤:

要解决这个问题,我们需要计算充电每台电脑所需的时间,并将其总和输出。具体的步骤如下:

  1. 输入参数

    • n:电脑的数量。
    • x:普通充电每单位时间充电的电量。
    • a:一个列表,包含每台电脑的电池容量。
  2. 充电计算

    • 每台电脑充满电所需的时间可以通过以下公式计算:

      充电时间=ai4x充电时间 = \frac{a_i}{4x}

    • 因为闪充每单位时间充电 4x 单位电量,所以每台电脑的充电时间就是其电池容量 aia_i 除以 4x

  3. 总充电时间

    • 对于所有电脑,总充电时间为所有单台电脑充电时间的和。
  4. 格式化输出

    • 输出结果保留两位小数。

最终代码:

def solution(n: int, x: int, a: list) -> str:
    return f'{sum(a)/(4*x):.2f}'

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

代码解释:

在Python中,f 是一种格式化字符串(f-string)的标记,允许你在字符串中嵌入表达式,并且在运行时自动进行求值。

solution中,f'{sum(a)/(4*x):.2f}' 主要的作用是:

  1. 嵌入表达式

    • sum(a):计算列表或可迭代对象 a 的总和。
    • 4*x:计算 4 和变量 x 的乘积。
    • sum(a)/(4*x):计算 a 的总和与 4*x 的比值。

其中,sum( a )是用于计算电池总容量,(4 * x)用于计算单位时间为电脑充电的电量,sum( a )/(4 * x)计算需要充电的总时间。

  1. 格式化输出

    • :.2f 是格式规范,它表示要将计算的结果格式化为浮点数,并保留两位小数。

结合起来,f'{sum(a)/(4*x):.2f}' 这个表达式的作用是:

  • 计算 sum(a)/(4*x) 的值,并将结果格式化为一个字符串,保留两位小数。

运行结果:

image.png


运用到的知识点:

  1. 格式化字符串(f-string)
  2. 列表求和的sum方法
  3. 格式化输出