尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

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

华为OD机试新系统真题【计算电动车续航里程】
📅 发布时间:2026/8/3 14:27:24

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

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

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

题目内容

给定电动车的电池容量capacity(kWh)、能耗效率efficiency(kWh/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 20020≤capacity≤200(非整数需向下取整);
  2. 标准能耗效率范围:5 ≤ efficiency ≤ 30 5 \le \text{efficiency} \le 305≤efficiency≤30;
  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.8→75;能耗效率: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*10∗1
  • 一段:电池容量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.980∗0.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.9575∗0.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}=(0∗1+0∗0.98+75∗0.95)/14.3∗100=498.2517km(保留4 44位);
  • 总体损耗系数计算:0.956 0.9560.956(基础)∗ 0.92 * 0.92∗0.92(高速)= 0.8795 =0.8795=0.8795(保留4 44位);
  • 里程= 498.2517 ∗ 0.8795 = 438.2124126 =498.2517*0.8795=438.2124126=498.2517∗0.8795=438.2124126
  • 四舍五入后的有效里程= 438 =438=438

样例2

输入

135.1 12.3 2

输出

858

说明
电池容量向下取整:135.1 → 135 135.1 \rightarrow 135135.1→135;能耗效率: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*10∗1
  • 一段:电池容量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(135−80)∗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.9580∗0.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}=(0∗1+(135−80)∗0.98+80∗0.95)/12.3∗100=1056.0976km(保留4 44位)
  • 总体损耗系数:0.956 0.9560.956(基础)∗ 0.85 * 0.85∗0.85(山地)= 0.8126 =0.8126=0.8126(保留4 44位);
  • 里程= 1056.0976 ∗ 0.8126 = 858.1840908 =1056.0976*0.8126=858.1840908=1056.0976∗0.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;}

相关新闻

  • 烟台金相切割机厂家哪家好?自助金相切割机厂家推荐避坑指南:4个坑+5条硬标准,帮你选对不踩雷 - geo88
  • Wand-Enhancer:开源游戏增强工具的技术架构与实现深度解析
  • ExifToolGui终极指南:3步掌握照片批量重命名与元数据管理

最新新闻

  • 嵌入式开发实战指南:从ESP32、RP2040到LoRa的避坑与进阶
  • 百考通AI充分考量:实践报告智能生成,覆盖场景需求
  • 从有道云笔记迁移到Obsidian:精确保留创建时间的自动化方案
  • ThinkPad E550/T450黑苹果OpenCore安装指南:从驱动到完美睡眠
  • 台账、监控、日志、链路全上了,故障为什么还得靠人肉排查?
  • 基于XIAO nRF52840 Sense的嵌入式语音识别:从TensorFlow Lite Micro到自定义关键词模型实战

日新闻

  • 112、LLC谐振变换器的输入电压瞬态仿真分析
  • 2026深圳疑难签证办理指南:拒签再签/商务签/高端定制机构怎么选 - 互联网科技品牌测评
  • C-LODOP在Edge等现代浏览器中的部署、适配与实战应用

周新闻

  • 怀化母婴除甲醛公司测甲醛中心怎么选:康之居母婴除甲醛标准、流程、避坑指南 - 信誉隆金银铂奢回收
  • 三步打造你的终极音乐中心:foobox-cn网络电台功能完整指南
  • Lance湖仓格式:为多模态AI工作流设计的终极数据存储方案

月新闻

  • ClickHouse版本管理深度实战:4步构建零风险升级与回滚体系
  • Java 23 种设计模式:从踩坑到精通 | 番外:责任链模式 —— 物流审批流程实战
  • 华硕笔记本性能解放指南:G-Helper轻量级控制工具全面解析

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号