会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
本题模拟电池充电过程,要求计算从当前电量 initialSOC 充到目标电量 targetSOC 所需的时间。充电电流并非恒定,而是按电量百分比分成三个阶段。
算法:按阶段分段累计
充电曲线被两个阈值 20% 和 80% 划分为三个阶段,每个阶段的电流特性不同:
- 预充阶段(电量
< 20%):电流恒定为最大电流的 20%;
题目内容
电池充电过程并非恒定电流,而是遵循一定的充电曲线。给定电池容量、当前电量百分比、目标电量百分比和充电器最大输出电流,请计算充电至目标电量所需的时间。
充电曲线规则如下:
- 当电量 <20% 时,采用预充模式,电流为最大电流的 20%
- 当电量 ⩾20% 且 <80% 时,采用恒流模式,电流为最大电流的 100%
- 当电量 ⩾80% 时,采用恒压模式,电流随电量增加而线性衰减:
电流计算公式:current(soc)=maxCurrent×(1−(soc−80)×0.045)
- 其中 soc 为电量百分比,该公式保证 current(80)=maxCurrent,current(100)=maxCurrent×0.1
- 每充入 batteryCapacity×1% 的电量,根据当前电量所在阶段确定该步进的充电电流,然后累加该步进所需的时间。由于恒压阶段电流线性变化,可使用平均电流法计算充电时间:平均电流 = 2起始电流+结束电流。
输入描述
batteryCapacity: 电池容量(mAh),整型,范围 1000∼10000
maxCurrent: 充电器最大输出电流(mA),整型,范围 500∼10000
initialSOC: 当前电量百分比(0∼100 的整数),整型
targetSOC: 目标电量百分比(initialSOC∼100 的整数),整型
输出描述
充电至目标电量所需的时间,浮点数,保留一位小数(四舍五入)
样例1
输入
3000,1500,0,100
输出
3.9
说明
从 0% 充电到 100%:
-
预充阶段(0%~20%):电流 = 1500×20%=300 mA
- 需要充入
20% 电量 = 600 mAh
- 预充时间:600/300=2.0 小时
-
恒流阶段(20%~80%):电流 = 1500 mA
- 需要充入
60% 电量 = 1800 mAh
- 恒流时间:1800/1500=1.2 小时
-
恒压阶段(80%~100%):电流从 1500 mA 线性降至 150 mA
- 需要充入
20% 电量 = 600 mAh
- 平均电流 = (1500+150)/2=825 mA
- 恒压时间:600/825≈0.73 小时
总时间:2.0+1.2+0.73=3.93,四舍五入保留一位小数:3.9
样例2
输入
3000,1500,70,85
输出
0.3
说明
从 70% 充电到 85%:
总时间:0.2+0.11=0.31,四舍五入保留一位小数:0.3