华为OD机试 - 出租车计费(Python/JS/C/C++ 2024 E卷 100分)

news2024/11/15 13:51:46

在这里插入图片描述

华为OD机试 2024E卷题库疯狂收录中,刷题点这里

专栏导读

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

一、题目描述

程序员小明打了一辆出租车去上班。出于职业敏感,他注意到这辆出租车的计费表有点问题,总是偏大.出租车司机解释说他不喜欢数字4,所以改装了计费表,任何数字位置遇到数字4就直接跳过,其余功能正常

比如:

1.23再多一块钱就变为25

2.39再多一块钱变为50;

3.399再多一块钱变为500;

小明识破了司机的伎俩,准备利用自己的学识打败司机的阴谋,给出计费表的表面读数,返回实际产生的费用

二、输入描述

输入一个数字N,表示里程表的读数。

三、输出描述

一个正整数,实际产生的费用。

四、测试用例

1、输入

15

2、输出

13

3、说明

15表示计费表的读数。
13表示实际产生的费用。

因为跳过了4和14。

五、解题思路

很简单的一道逻辑分析题。

六、Python算法源码

# 导入sys模块以读取输入
import sys

def main():
    # 读取标准输入并转换为整数
    input_num = int(sys.stdin.readline())
    
    # 初始化sum为输入的数字
    sum_val = input_num
    
    # 初始化跳过的数量为0
    skip = 0
    
    # 初始化当前位置的数值为0
    current = 0
    
    # 初始化位数标识,开始为1(个位)
    j = 1
    
    # 当sum大于0时,继续循环
    while sum_val > 0:
        # 取sum的个位数字
        digit = sum_val % 10
        
        # 如果个位数字大于4
        if digit > 4:
            # 计算跳过的数量,考虑跳过包含数字4的情况
            skip += (digit - 1) * current + j
        else:
            # 如果个位数字不大于4,直接计算跳过的数量
            skip += digit * current
        
        # 更新current,乘以9并加上当前位数
        current = current * 9 + j
        
        # 更新位数标识,乘以10
        j *= 10
        
        # 去掉最后一位数字,继续处理下一位
        sum_val = sum_val // 10
    
    # 输出最终结果,输入数减去跳过的数量
    print(input_num - skip)

# 调用主函数
if __name__ == "__main__":
    main()

七、JavaScript算法源码

// 定义主函数
function main() {
    // 从标准输入读取数据
    const fs = require('fs');
    const input = fs.readFileSync('/dev/stdin', 'utf8').trim();
    
    // 将输入转换为整数
    const inputNum = parseInt(input);
    
    // 初始化sum为输入的数字
    let sum = inputNum;
    
    // 初始化跳过的数量为0
    let skip = 0;
    
    // 初始化当前位置的数值为0
    let current = 0;
    
    // 初始化位数标识,开始为1(个位)
    let j = 1;
    
    // 当sum大于0时,继续循环
    while (sum > 0) {
        // 取sum的个位数字
        const digit = sum % 10;
        
        // 如果个位数字大于4
        if (digit > 4) {
            // 计算跳过的数量,考虑跳过包含数字4的情况
            skip += (digit - 1) * current + j;
        } else {
            // 如果个位数字不大于4,直接计算跳过的数量
            skip += digit * current;
        }
        
        // 更新current,乘以9并加上当前位数
        current = current * 9 + j;
        
        // 更新位数标识,乘以10
        j *= 10;
        
        // 去掉最后一位数字,继续处理下一位
        sum = Math.floor(sum / 10);
    }
    
    // 输出最终结果,输入数减去跳过的数量
    console.log(inputNum - skip);
}

// 调用主函数
main();

八、C算法源码

#include <stdio.h>

// 主函数
int main() {
    int input_num;
    
    // 读取输入的整数
    scanf("%d", &input_num);
    
    // 初始化sum为输入的数字
    int sum = input_num;
    
    // 初始化跳过的数量为0
    int skip = 0;
    
    // 初始化当前位置的数值为0
    int current = 0;
    
    // 初始化位数标识,开始为1(个位)
    int j = 1;
    
    // 当sum大于0时,继续循环
    while (sum > 0) {
        // 取sum的个位数字
        int digit = sum % 10;
        
        // 如果个位数字大于4
        if (digit > 4) {
            // 计算跳过的数量,考虑跳过包含数字4的情况
            skip += (digit - 1) * current + j;
        } else {
            // 如果个位数字不大于4,直接计算跳过的数量
            skip += digit * current;
        }
        
        // 更新current,乘以9并加上当前位数
        current = current * 9 + j;
        
        // 更新位数标识,乘以10
        j *= 10;
        
        // 去掉最后一位数字,继续处理下一位
        sum = sum / 10;
    }
    
    // 输出最终结果,输入数减去跳过的数量
    printf("%d\n", input_num - skip);
    
    return 0;
}

九、C++算法源码

#include <iostream>
using namespace std;

// 主函数
int main() {
    int input_num;
    
    // 读取输入的整数
    cin >> input_num;
    
    // 初始化sum为输入的数字
    int sum = input_num;
    
    // 初始化跳过的数量为0
    int skip = 0;
    
    // 初始化当前位置的数值为0
    int current = 0;
    
    // 初始化位数标识,开始为1(个位)
    int j = 1;
    
    // 当sum大于0时,继续循环
    while (sum > 0) {
        // 取sum的个位数字
        int digit = sum % 10;
        
        // 如果个位数字大于4
        if (digit > 4) {
            // 计算跳过的数量,考虑跳过包含数字4的情况
            skip += (digit - 1) * current + j;
        } else {
            // 如果个位数字不大于4,直接计算跳过的数量
            skip += digit * current;
        }
        
        // 更新current,乘以9并加上当前位数
        current = current * 9 + j;
        
        // 更新位数标识,乘以10
        j *= 10;
        
        // 去掉最后一位数字,继续处理下一位
        sum = sum / 10;
    }
    
    // 输出最终结果,输入数减去跳过的数量
    cout << (input_num - skip) << endl;
    
    return 0;
}


🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2024 E卷 200分)

🏆本文收录于,华为OD机试真题(Python/JS/C/C++)

刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2157859.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

飞睿智能实时雷达活体探测传感器模块,智能家居静止检测实时感知人员有无

随着科技的飞速发展&#xff0c;我们的生活正在经历着未有的创新。在这个创新的浪潮中&#xff0c;实时雷达活体探测传感器模块的技术正逐渐崭露头角&#xff0c;以其独特的优势为我们的生活带来安全与便捷。今天&#xff0c;我们就来详细探讨一下这项技术&#xff0c;看看它是…

帮13岁小孩哥2分钟完成开发,这位AI程序员究竟是何方神圣?

通义灵码再升级&#xff0c;真AI程序员来了 随着通义系列基础模型能力的全面提升&#xff0c;各个具体领域的应用模型也随之飞升。这次在云栖大会上迎来重磅升级的&#xff0c;就包括用于代码生成的通义灵码。 一年前的通义灵码还只能完成基础的辅助编程任务&#xff0c;很难…

基于SpringBoot和Vue框架的医保管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 1.研究的主要内容与方法 &#xff08;1&#xff09;主要内容 医保管理系统采用B/S模式进行开发&#xff0c;采用Springboot框架、VUE技术、Idea为环境、MySQL为数据库开发。主要功能有&#xff1a;个人资料管理、投保用户管理、…

上海我店平台 8月新增注册用户89w 两年破百亿销售额!

近年来&#xff0c;网络空间内涌现了一个备受瞩目的新平台——“上海我店”&#xff0c;其公布的业绩数据显示&#xff0c;短短三年内&#xff0c;该平台交易流水已突破百亿大关&#xff0c;上月更是迎来了近百万的新增注册用户&#xff0c;这一消息迅速吸引了众多商家的目光。…

【深度好文】你必须要知道-大模型的上下文窗口(Context Window )

Context Window 上下文窗口&#xff1a;捕捉信息的范围 上下文窗口指的是 AI 模型在生成回答时考虑的 Token 数量。它决定了模型能够捕捉信息的范围。上下文窗口越大&#xff0c;模型能够考虑的信息就越多&#xff0c;生成的回答也就越相关和连贯。 在语言模型中&#xff0c;上…

SysML图例-手电筒

DDD领域驱动设计批评文集>> 《软件方法》强化自测题集>> 《软件方法》各章合集>>

第二证券:股价为什么出现大跌?股价大跌时怎么办?

股票是预期收益率较大的出资之一&#xff0c;但同时股票商场的动摇也会是比较大的&#xff0c;股价大涨大跌都是有或许出现的。股价大涨会让出资者获利更多&#xff0c;而大跌也会加大出资者的损失。下面为我们分析股价为什么会大跌&#xff0c;并介绍股价大跌出资者应该如何应…

【测试】——Selenium API (万字详解)

&#x1f4d6; 前言&#xff1a;本文详细介绍了如何利用Selenium进行Web自动化测试&#xff0c;包括定位元素&#xff08;如cssSelector和xpath&#xff09;、常用操作函数&#xff08;如点击、输入等&#xff09;、窗口管理、键盘鼠标事件和浏览器导航&#xff0c;以及处理弹窗…

linux 的 sed 命令的 使用学习

&#xff08;1&#xff09; sed 概述&#xff1a; &#xff08;2&#xff09; 首先谢谢 b 站这位老师&#xff0c;这位专家的完美讲解 讲解继续&#xff1a; &#xff08;3&#xff09; 关于 sed 里的模式&#xff1a; &#xff08;4&#xff09; sed 支持的常用的对文本编辑的…

LIN总线CAPL函数—— 设置报头同步间隔场长度(linSetBreakLength)

&#x1f345; 我是蚂蚁小兵&#xff0c;专注于车载诊断领域&#xff0c;尤其擅长于对CANoe工具的使用&#x1f345; 寻找组织 &#xff0c;答疑解惑&#xff0c;摸鱼聊天&#xff0c;博客源码&#xff0c;点击加入&#x1f449;【相亲相爱一家人】&#x1f345; 玩转CANoe&…

爬虫 ----hook

目录 定义&#xff1a; 了解什么是hook? 举例 hook XHR请求 XMLHttpRequest 案例地址&#xff1a; Interceptors-拦截器 HOOK cookie操作 cookie 示范 常见的hook代码总结 1.Hook Cookie 2.Hook Header 3.Hook URL 4.Hook JSON.stringify 5.Hook JSON.parse 6.Ho…

5G Multicast/Broadcast Services(MBS) (四)

这篇是有关MBS RRC相关的一些基本内容,内容不多,但是感觉很关键,主要包括SI,MBS网络侧相关的内容,L2 协议架构,cell reselection prioritity以及MBS接收的一些内容,希望有帮助。 SI 在MBS场景中,SI和常规5G一样分为Minimum SI和Other SI。Minimum SI是MIB和SIB1,Min…

智能创造的幕后推手:AIGC浪潮下看AI训练师如何塑造智能未来

文章目录 一、AIGC时代的算法与模型训练概览二、算法与模型训练的关键环节三、AI训练师的角色与职责四、AI训练师的专业技能与素养五、AIGC算法与模型训练的未来展望《AI训练师手册&#xff1a;算法与模型训练从入门到精通》亮点内容简介作者简介谷建阳 目录 《医学统计学从入门…

Cisco Packet Tracer超详细下载安装教程(附中文版插件)

一、安装包下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1RK8iQ9lJG__vBEGCYVYNSA 提取码&#xff1a;1lvb 压缩包解压密码&#xff1a;66668888&#xff0c;不能正常解压的&#xff0c;推荐使用360压缩解压 二、安装教程&#xff1a; 1.双击启动安装包 2.点击N…

springboot+vue3基于Java的校园二手商品交易系统设计与实现(编号:4259233)

目录 功能和开发技术介绍具体实现截图开发核心技术介绍&#xff1a;技术创新点vue3和vue2的区别&#xff1a;核心代码部分展示非功能需求分析系统开发流程系统运行步骤软件测试源码获取 功能和开发技术介绍 本课题拟采用主流的MVC架构、开发工具idea、java语言编程、MySQL数据…

【Python】入门学习1:开发前的准备

准备工作&#xff1a; 1、电脑系统&#xff1a;windows 64位&#xff1b; 2、python学习所需工具&#xff1a;“解释器、编译器”&#xff1b; &#xff08;1&#xff09;python 解释器&#xff1a;解释代码的&#xff0c;把 python 计算机语言翻译给计算机认识&#xff1b;…

Linux 5.0在start_kernel之前做了什么事?(以aarch64为例)

目录 引言汇编启动&#xff01;&#xff01;&#xff01;细节剖析 引言 之前在研究Linux内核源码的时候总是找不到关于这部分源码的相关剖析&#xff0c;要么也是模棱两可的&#xff0c;也有一些比较专业的代码分析&#xff0c;不过比较分散&#xff0c;感觉大家都不太喜欢这部…

[Excel VBA]如何使用VBA按行拆分Excel工作表

如何使用VBA按行拆分Excel工作表 在Excel中&#xff0c;按行拆分工作表并生成多个新工作表是一项实用的技能&#xff0c;尤其在处理大量数据时。以下是一个VBA代码示例&#xff0c;能帮助你轻松实现这一功能。 1. 代码说明 本代码会根据源工作表中每个姓名创建一个新工作表&a…

ArcGIS核密度分析(栅格处理范围与掩膜分析)

多时候我们在进行栅格分析的时候&#xff0c;处理的结果不能完全覆盖我们需要的范围。 比如&#xff0c;我们对点数据进行密度分析、栅格插值等。比如下图 为什么会如此呢&#xff1f; 那是因为在做这个密度分析或者栅格插值的时候&#xff0c;默认是以点的四至范围来生成的&am…

抖音生活服务入局攻略曝光!普通人也能抓住风口!

当前&#xff0c;抖音生活服务的热度持续飙升&#xff0c;让不少人都有了入局的打算&#xff0c;与之相关的各类话题如抖音生活服务的入局途径有哪些等也因此成为了人们热议的对象。而从这些话题的讨论情况来看&#xff0c;绝大多数讨论者只知道抖音生活服务火爆&#xff0c;却…