当前位置: 首页 > news >正文

华为OD机试新系统真题【计算电动车续航里程】

计算电动车续航里程(C/C++/Py/Java/Js/Go)题解

华为OD机试新系统真题 华为OD上机考试新系统真题 8月2号 100分题型

华为OD机试新系统真题目录点击查看: 华为OD机试新系统真题题库目录|机考题库 + 算法考点详解

题目内容

给定电动车的电池容量capacitykWh)、能耗效率efficiencykWh/100km)、驾驶场景(城市 / 高速 / 山路,int类型,分别是0/1/2),计算该车的有效续航里程(km)。

核心公式:理论续航里程= (电池容量 * 容量能耗修正系数) / 能耗效率 *100;(结果按四舍五入保留4位小数)

有效续航里程= 理论续航里程 * 总体损耗系数 ,相关系数计算规则如下:

容量能耗修正数 Kp:不同容量下,能效效率不同,分段进行能效效率修正

  • 零段:电池容量capacity>=160kWh时,kp0 = 1(无损耗)
  • 一段:电池容量160kWh>capacity>80kWh时,kp1 = 0.98
  • 二段:电池容量capacity<=80kWh时,kp2 = 0.95

总体损耗系数 kd:基础损耗系数为kb (0.956)* 场景修正系数kc(结果按四舍五入保留4位小数)

补充约束:

  1. 电池容量范围:20 ≤ capacity ≤ 200 20 \le \text{capacity} \le 20020capacity200(非整数需向下取整);
  2. 标准能耗效率范围:5 ≤ efficiency ≤ 30 5 \le \text{efficiency} \le 305efficiency30
  3. 驾驶场景仅支持:“city”(城市)0/场景修正系数kc0 = 1 \text{kc0}=1kc0=1、“highway”(高速)1/场景修正系数kc1 = 0.92 \text{kc1}=0.92kc1=0.92、“mountain”(山路)2/场景修正系数kc2 = 0.85 \text{kc2}=0.85kc2=0.85
  4. 结果要求:有效续航里程需四舍五入为整数,输出里程km

输入描述

输入为一行,包含三个值:电池容量(可能含小数)、能耗效率(可能含小数)、驾驶场景(整数0/1/2),以逗号分隔。

输出描述

输出一个整数,表示四舍五入后的有效续航里程(单位:km)。

样例1

输入

75.8 14.3 1

输出

438

说明
电池容量向下取整:75.8 → 75 75.8 \rightarrow 7575.875;能耗效率:14.3 14.314.3

  • 零段:电池容量capacity > = 160 kWh \text{capacity}>=160\text{kWh}capacity>=160kWh时,kp0 = 1 \text{kp0}=1kp0=1(无损耗),75 7575不在此段内,电池容量等效为0 ∗ 1 0*101
  • 一段:电池容量160 kWh > capacity > 80 kWh 160\text{kWh}>\text{capacity}>80\text{kWh}160kWh>capacity>80kWh时,kp1 = 0.98 \text{kp1}=0.98kp1=0.9875 7575不在此段内,电池容量等效为0 ∗ 0.98 0*0.9800.98
  • 二段:电池容量capacity < = 80 kWh \text{capacity}<=80\text{kWh}capacity<=80kWh时,kp2 = 0.95 \text{kp2}=0.95kp2=0.9575 7575在此段内,电池容量等效为75 ∗ 0.95 75*0.95750.95
  • 理论里程= ( 0 ∗ 1 + 0 ∗ 0.98 + 75 ∗ 0.95 ) / 14.3 ∗ 100 = 498.2517 km =(0*1+0*0.98+75*0.95)/14.3*100=498.2517\text{km}=(01+00.98+750.95)/14.3100=498.2517km(保留4 44位);
  • 总体损耗系数计算:0.956 0.9560.956(基础)∗ 0.92 * 0.920.92(高速)= 0.8795 =0.8795=0.8795(保留4 44位);
  • 里程= 498.2517 ∗ 0.8795 = 438.2124126 =498.2517*0.8795=438.2124126=498.25170.8795=438.2124126
  • 四舍五入后的有效里程= 438 =438=438

样例2

输入

135.1 12.3 2

输出

858

说明
电池容量向下取整:135.1 → 135 135.1 \rightarrow 135135.1135;能耗效率:12.3 12.312.3

  • 零段:电池容量capacity > = 160 kWh \text{capacity}>=160\text{kWh}capacity>=160kWh时,kp0 = 1 \text{kp0}=1kp0=1(无损耗),135 135135不在此段内,电池容量等效为0 ∗ 1 0*101
  • 一段:电池容量160 kWh > capacity > 80 kWh 160\text{kWh}>\text{capacity}>80\text{kWh}160kWh>capacity>80kWh时,kp1 = 0.98 \text{kp1}=0.98kp1=0.98135 135135在此段内,电池容量等效为( 135 − 80 ) ∗ 0.98 (135-80)*0.98(13580)0.98
  • 二段:电池容量capacity < = 80 kWh \text{capacity}<=80\text{kWh}capacity<=80kWh时,kp2 = 0.95 \text{kp2}=0.95kp2=0.95剩余的电池容量80 8080在此段内,电池容量等效为80 ∗ 0.95 80*0.95800.95
  • 理论里程= ( 0 ∗ 1 + ( 135 − 80 ) ∗ 0.98 + 80 ∗ 0.95 ) / 12.3 ∗ 100 = 1056.0976 km =(0*1+(135-80)*0.98+80*0.95)/12.3*100=1056.0976\text{km}=(01+(13580)0.98+800.95)/12.3100=1056.0976km(保留4 44位)
  • 总体损耗系数:0.956 0.9560.956(基础)∗ 0.85 * 0.850.85(山地)= 0.8126 =0.8126=0.8126(保留4 44位);
  • 里程= 1056.0976 ∗ 0.8126 = 858.1840908 =1056.0976*0.8126=858.1840908=1056.09760.8126=858.1840908
  • 四舍五入后的有效里程= 858 =858=858

题解

思路:模拟

  1. 将电池容量向下取整

  2. 分段计算每一段能耗修正数,得到能耗修正数总和。

  3. 依照公式理论续航里程 = (电池容量 * 容量能耗修正系数) / 能耗效率 * 100得到理论续航里程并四舍五入保留4位小数。

  4. 计算总体损耗系数按照公式基础损耗系数为 kb (0.956) * 场景修正系数 kc,四舍五入保留4位小数

  5. 总体损耗系数 * 理论续航里程计算实际里程,并四舍五入保留整数。

c++

#include<bits/stdc++.h>usingnamespacestd;intsolve(doublecapacity,doubleefficiency,inttype){// 向下取整intrealCapacity=(int)floor(capacity);// 计算每一段能耗修正数doubleseg0=max(0,realCapacity-160)*1.0;doubleseg1=max(0,min(realCapacity,160)-80)*0.98;doubleseg2=min(realCapacity,80)*0.95;doublecoefficient=seg0+seg1+seg2;// 计算理论续航里程doubletheoryDistance=coefficient/efficiency*100;// 四舍五入保留4位小数theoryDistance=round(theoryDistance*10000)/10000.0;doublekc[3]={1.0,0.92,0.85};// 计算总体损耗系数 并保留4位小数doublekd=round(0.956*kc[type]*10000)/10000.0;// 有效续航里程 并四舍五入保留正数returnround(theoryDistance*kd);}intmain(){doublecapacity,efficiency;inttype;cin>>capacity>>efficiency>>type;cout<<solve(capacity,efficiency,type);return0;}

Java

importjava.util.*;publicclassMain{staticintsolve(doublecapacity,doubleefficiency,inttype){// 向下取整intrealCapacity=(int)Math.floor(capacity);// 计算每一段能耗修正数doubleseg0=Math.max(0,realCapacity-160)*1.0;doubleseg1=Math.max(0,Math.min(realCapacity,160)-80)*0.98;doubleseg2=Math.min(realCapacity,80)*0.95;doublecoefficient=seg0+seg1+seg2;// 计算理论续航里程doubletheoryDistance=coefficient/efficiency*100;// 四舍五入保留4位小数theoryDistance=Math.round(theoryDistance*10000)/10000.0;double[]kc={1.0,0.92,0.85};// 计算总体损耗系数 并保留4位小数doublekd=Math.round(0.956*kc[type]*10000)/10000.0;// 有效续航里程 并四舍五入保留正数return(int)Math.round(theoryDistance*kd);}publicstaticvoidmain(String[]args){Scannersc=newScanner(System.in);doublecapacity=sc.nextDouble();doubleefficiency=sc.nextDouble();inttype=sc.nextInt();System.out.println(solve(capacity,efficiency,type));sc.close();}}

Python

importmathdefsolve(capacity,efficiency,type):# 向下取整real_capacity=int(math.floor(capacity))# 计算每一段能耗修正数seg0=max(0,real_capacity-160)*1.0seg1=max(0,min(real_capacity,160)-80)*0.98seg2=min(real_capacity,80)*0.95coefficient=seg0+seg1+seg2# 计算理论续航里程theory_distance=coefficient/efficiency*100# 四舍五入保留4位小数theory_distance=round(theory_distance,4)kc=[1.0,0.92,0.85]# 计算总体损耗系数 并保留4位小数kd=round(0.956*kc[type],4)# 有效续航里程 并四舍五入保留正数returnround(theory_distance*kd)if__name__=="__main__":capacity,efficiency,type=input().split()capacity=float(capacity)efficiency=float(efficiency)type=int(type)print(solve(capacity,efficiency,type))

JavaScript

constreadline=require("readline");constrl=readline.createInterface({input:process.stdin,output:process.stdout});rl.on("line",function(line){letarr=line.trim().split(/\s+/);letcapacity=Number(arr[0]);letefficiency=Number(arr[1]);lettype=Number(arr[2]);functionsolve(capacity,efficiency,type){// 向下取整letrealCapacity=Math.floor(capacity);// 计算每一段能耗修正数letseg0=Math.max(0,realCapacity-160)*1.0;letseg1=Math.max(0,Math.min(realCapacity,160)-80)*0.98;letseg2=Math.min(realCapacity,80)*0.95;letcoefficient=seg0+seg1+seg2;// 计算理论续航里程lettheoryDistance=coefficient/efficiency*100;// 四舍五入保留4位小数theoryDistance=Math.round(theoryDistance*10000)/10000.0;letkc=[1.0,0.92,0.85];// 计算总体损耗系数 并保留4位小数letkd=Math.round(0.956*kc[type]*10000)/10000.0;// 有效续航里程 并四舍五入保留正数returnMath.round(theoryDistance*kd);}console.log(solve(capacity,efficiency,type));rl.close();});

Go

packagemainimport("bufio""fmt""math""os")funcsolve(capacityfloat64,efficiencyfloat64,typint)int{// 向下取整realCapacity:=int(math.Floor(capacity))// 计算每一段能耗修正数seg0:=math.Max(0,float64(realCapacity-160))*1.0seg1:=math.Max(0,math.Min(float64(realCapacity),160)-80)*0.98seg2:=math.Min(float64(realCapacity),80)*0.95coefficient:=seg0+seg1+seg2// 计算理论续航里程theoryDistance:=coefficient/efficiency*100// 四舍五入保留4位小数theoryDistance=math.Round(theoryDistance*10000)/10000.0kc:=[]float64{1.0,0.92,0.85}// 计算总体损耗系数 并保留4位小数kd:=math.Round(0.956*kc[typ]*10000)/10000.0// 有效续航里程 并四舍五入保留正数returnint(math.Round(theoryDistance*kd))}funcmain(){in:=bufio.NewReader(os.Stdin)varcapacity,efficiencyfloat64vartypintfmt.Fscan(in,&capacity,&efficiency,&typ)fmt.Println(solve(capacity,efficiency,typ))}

C语言

#include<stdio.h>#include<math.h>intsolve(doublecapacity,doubleefficiency,inttype){// 向下取整intrealCapacity=(int)floor(capacity);// 计算每一段能耗修正数doubleseg0=fmax(0,realCapacity-160)*1.0;doubleseg1=fmax(0,fmin(realCapacity,160)-80)*0.98;doubleseg2=fmin(realCapacity,80)*0.95;doublecoefficient=seg0+seg1+seg2;// 计算理论续航里程doubletheoryDistance=coefficient/efficiency*100;// 四舍五入保留4位小数theoryDistance=round(theoryDistance*10000)/10000.0;doublekc[3]={1.0,0.92,0.85};// 计算总体损耗系数 并保留4位小数doublekd=round(0.956*kc[type]*10000)/10000.0;// 有效续航里程 并四舍五入保留正数return(int)round(theoryDistance*kd);}intmain(){doublecapacity,efficiency;inttype;scanf("%lf %lf %d",&capacity,&efficiency,&type);printf("%d",solve(capacity,efficiency,type));return0;}
http://www.jsqmd.com/news/1320442/

相关文章:

  • Steam游戏自动破解终极指南:3分钟实现免客户端启动的完整方案
  • 20252026年大案要案律师推荐:重大疑难案件委托前必看的甄选指南与避坑剖析 - 优企甄选
  • 烟台金相切割机厂家哪家好?自助金相切割机厂家推荐避坑指南:4个坑+5条硬标准,帮你选对不踩雷 - geo88
  • 别再调参了!真正决定AI供应链效果的是这3类非结构化数据清洗范式(NLP+时序+地理空间联合处理协议V2.3)
  • 如何用VoiceFixer在5分钟内修复任何音频问题:完整免费指南
  • PyTorch 分布式训练卡住不报错:用 monitored_barrier 定位失联 rank
  • 从零搭建多节点以太坊私链:实战指南与深度解析
  • Unity JSON解析全攻略:JsonUtility、Newtonsoft.Json与ListJson实战详解
  • 从BAM到IGV:使用deeptools实现基因组信号差异可视化全流程
  • Wand-Enhancer:开源游戏增强工具的技术架构与实现深度解析
  • ExifToolGui终极指南:3步掌握照片批量重命名与元数据管理
  • 逆风局牛魔辅助实战指南:从视野布控到翻盘决策
  • 2026梧州营业执照地址变更机构推荐,个体户注册机构哪家好?利发财财税高效服务口碑推荐 - geo88
  • FantiaDL:终极指南:如何一键下载Fantia粉丝内容完整备份
  • 终极指南:三分钟搞定Android模拟位置隐藏,轻松绕过应用检测
  • 3分钟极速搞定:Windows电脑完美识别iPhone的终极指南 [特殊字符]
  • 【CNN-Transformer】锂电池SOH预测估计研究(Python代码实现)
  • 从Arduino到Zephyr:在XIAO ESP32C3上构建工业级物联网应用
  • Xshell进阶实战:从基础连接到高效运维的全面指南
  • Claude API连接故障与Virtual Machine Platform安装问题排查指南
  • 2026年简历模板市场趋势与五维评估体系
  • STM32-S09-指纹识别开锁(管理)+密码开锁(可设)+TFT彩屏+舵机+蜂鸣器+矩阵按键+(无线方式选择)-21(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 如何专业调校AMD锐龙处理器:RyzenAdj终极性能优化指南
  • SSD1331驱动RGB OLED全彩显示:从SPI/I2C接口到Python图像处理的嵌入式实战
  • GBFR Logs完整指南:碧蓝幻想Relink伤害统计工具终极教程
  • Python实现网易云音乐排行榜数据分析与可视化系统
  • LVGL圆形屏适配指南:为XIAO开发板打造专属UI解决方案
  • Chaldea:FGO玩家的终极养成规划与战斗模拟神器
  • 315MHz RF无线通信套件:从原理到实战的物联网低成本解决方案
  • 移动储能在配电网韧性提升中的优化与应用