华为OD机试真题 - 来自异国的客人(Python/JS/C/C++ 2024 D卷 100分)

news2024/11/24 3:12:01

在这里插入图片描述

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

专栏导读

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

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

一、题目描述

有位客人来自异国,在该国使用m进制计数。

该客人有个幸运数字n(n<m),每次购物时,其总是喜欢计算本次支付的花费(折算为异国的价格后)中存在多少幸运数字。

问: 当其购买一个在我国价值k的产品时,其中包含多少幸运数字?

二、输入描述

第一行输入为 k,n,m。其中:

k 表示 该客人购买的物品价值 (以十进制计算的价格)

n 表示该客人的幸运数字

m 表示 该客人所在国度的采用的进制

三、输出描述

输出幸运数字的个数,行未无空格。

四、测试用例

1、输入

10 2 4

2、输出

2

3、说明

10用4进制表示时为22,同时,异国客人的幸运数字是2,故而此处输出为2,表示有2个幸运数字。

4、输入

10 4 4

5、输出

0

6、说明

此时客人的幸运数字为4,但是由于该国最大为4进制,故而在该国的进制下不可能出现幸运数字,故而返回0

五、解题思路

我们需要将十进制数 k 转换为 m 进制,然后统计其中等于幸运数字 n 的个数。具体步骤如下:

  1. 将十进制数 k 转换为 m 进制:
    • 使用除基取余法,直到 k 为0,将每次的余数记录下来。
    • 将记录的余数反向排列,即为 m 进制表示。
  2. 统计幸运数字的个数:
    • 遍历 m 进制表示的数字,统计其中等于 n 的数字个数。
  3. 输出结果:输出幸运数字的个数。

六、Python算法源码

def convert_to_base_m(k, m):
    """将十进制数 k 转换为 m 进制表示"""
    if k == 0:
        return "0"
    m_base_number = []
    while k > 0:
        remainder = k % m
        m_base_number.append(str(remainder))
        k //= m
    m_base_number.reverse()
    return ''.join(m_base_number)

def count_lucky_numbers(m_base_number, n):
    """统计 m 进制表示中幸运数字 n 的个数"""
    lucky_digit = str(n)
    return m_base_number.count(lucky_digit)

def main():
    # 读取输入的 k, n, m
    k = int(input("请输入 k: "))
    n = int(input("请输入 n: "))
    m = int(input("请输入 m: "))

    # 将十进制数 k 转换为 m 进制
    m_base_number = convert_to_base_m(k, m)

    # 统计幸运数字 n 的个数
    lucky_number_count = count_lucky_numbers(m_base_number, n)

    # 输出结果
    print(lucky_number_count)

if __name__ == "__main__":
    main()

七、JavaScript算法源码

function convertToBaseM(k, m) {
    // 将十进制数 k 转换为 m 进制表示
    let mBaseNumber = '';
    if (k === 0) return '0';
    while (k > 0) {
        let remainder = k % m;
        mBaseNumber = remainder.toString() + mBaseNumber;
        k = Math.floor(k / m);
    }
    return mBaseNumber;
}

function countLuckyNumbers(mBaseNumber, n) {
    // 统计 m 进制表示中幸运数字 n 的个数
    let count = 0;
    let luckyDigit = n.toString();

    for (let digit of mBaseNumber) {
        if (digit === luckyDigit) {
            count++;
        }
    }

    return count;
}

function main() {
    // 读取输入的 k, n, m
    let k = parseInt(prompt("请输入 k: "));
    let n = parseInt(prompt("请输入 n: "));
    let m = parseInt(prompt("请输入 m: "));

    // 将十进制数 k 转换为 m 进制
    let mBaseNumber = convertToBaseM(k, m);

    // 统计幸运数字 n 的个数
    let luckyNumberCount = countLuckyNumbers(mBaseNumber, n);

    // 输出结果
    console.log(luckyNumberCount);
}

// 调用主函数执行程序
main();

八、C算法源码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 将十进制数 k 转换为 m 进制表示
void convertToBaseM(int k, int m, char *mBaseNumber) {
    int index = 0;
    if (k == 0) {
        mBaseNumber[index++] = '0';
        mBaseNumber[index] = '\0';
        return;
    }
    while (k > 0) {
        int remainder = k % m;
        mBaseNumber[index++] = remainder + '0';  // 将数字转换为字符
        k /= m;
    }
    mBaseNumber[index] = '\0';

    // 反转字符串
    int len = strlen(mBaseNumber);
    for (int i = 0; i < len / 2; i++) {
        char temp = mBaseNumber[i];
        mBaseNumber[i] = mBaseNumber[len - 1 - i];
        mBaseNumber[len - 1 - i] = temp;
    }
}

// 统计 m 进制表示中幸运数字 n 的个数
int countLuckyNumbers(char *mBaseNumber, int n) {
    int count = 0;
    char luckyDigit = n + '0';

    for (int i = 0; mBaseNumber[i] != '\0'; i++) {
        if (mBaseNumber[i] == luckyDigit) {
            count++;
        }
    }

    return count;
}

int main() {
    int k, n, m;

    // 读取输入的 k, n, m
    printf("请输入 k: ");
    scanf("%d", &k);
    printf("请输入 n: ");
    scanf("%d", &n);
    printf("请输入 m: ");
    scanf("%d", &m);

    // 定义一个足够大的字符数组来存储 m 进制表示的数字
    char mBaseNumber[65];

    // 将十进制数 k 转换为 m 进制
    convertToBaseM(k, m, mBaseNumber);

    // 统计幸运数字 n 的个数
    int luckyNumberCount = countLuckyNumbers(mBaseNumber, n);

    // 输出结果
    printf("%d\n", luckyNumberCount);

    return 0;
}

九、C++算法源码

#include <iostream>
#include <string>
#include <algorithm>

// 将十进制数 k 转换为 m 进制表示
std::string convertToBaseM(int k, int m) {
    std::string mBaseNumber;
    if (k == 0) {
        return "0";
    }
    while (k > 0) {
        int remainder = k % m;
        mBaseNumber += std::to_string(remainder);
        k /= m;
    }
    std::reverse(mBaseNumber.begin(), mBaseNumber.end());
    return mBaseNumber;
}

// 统计 m 进制表示中幸运数字 n 的个数
int countLuckyNumbers(const std::string& mBaseNumber, int n) {
    char luckyDigit = '0' + n;
    int count = 0;
    for (char digit : mBaseNumber) {
        if (digit == luckyDigit) {
            count++;
        }
    }
    return count;
}

int main() {
    int k, n, m;

    // 读取输入的 k, n, m
    std::cout << "请输入 k: ";
    std::cin >> k;
    std::cout << "请输入 n: ";
    std::cin >> n;
    std::cout << "请输入 m: ";
    std::cin >> m;

    // 将十进制数 k 转换为 m 进制
    std::string mBaseNumber = convertToBaseM(k, m);

    // 统计幸运数字 n 的个数
    int luckyNumberCount = countLuckyNumbers(mBaseNumber, n);

    // 输出结果
    std::cout << luckyNumberCount << std::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/2096854.html

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

相关文章

使用老毛桃的一些坑

个性设置不要去点 三种模式的区别 ISO模式&#xff1a;直接U盘成为某个系统的启动盘 本地模式&#xff1a;相当于硬盘中植入一个PE系统&#xff0c;与后续的windows系统&#xff0c;一起组成双系统 普通模式&#xff1a;PE系统在U盘中&#xff0c;这样ISO可以是多种不同的系…

98.SAP MII功能详解(12)Workbench-Transaction Logic(For Next Loop)

目录 1.Logic->For Next Loop 2.演示 配置对象 配置连接 for循环的整体演示 1.Logic->For Next Loop 此操作用于在预定义的次数内执行任务。每次迭代都会执行直接跟随For Next循环操作的所有操作&#xff0c;直到达到To限制。 若要在达到To属性限制之前停止&…

我用GPT对RAG技术的学习和探索

思维导图 下图是我的学习和探索过程&#xff0c;红点表示已研究&#xff0c;黄点表示待研究 目录 思维导图RAG技术概述RAG 的关键优点应用场景 如何了解RAG技术的原理和应用1. **基础理论学习**2. **实战演练**3. **学习资源利用**4. **保持学习的连贯性**5. **多角度理解**6. …

SpringBoot配置返回数据不存在null

一、引言 最近在做项目中遇到一个神奇的问题&#xff0c;在测试返回银行三级数据的时候有的项目中返回的数据中把null值的数据返回了&#xff0c;而有的时候就不存在null值数据&#xff0c;如下所示&#xff1a; 存在null值情况 不含null值情况 但是我们可以看一下返回的VO的…

AG32 MCU如何指定一段RAM可以重启或复位不丢失数据

AG32 MCU如何指定一段RAM可以重启或复位不丢失数据? 目前还没这样的功能。 建议可以试下&#xff1a; 把系统ram设置成120K&#xff0c;最后的8K只能自己访问。 这样重启时&#xff0c;系统不会自动擦除最后的8K。可能是可以的。 备份寄存器大概有几十字节可以用。但是这个需…

2024最新comfyui保姆级教程来啦!comfyui工作流搭建看这一篇就够了!

前言 一、SD主流 UI Stable Diffusion&#xff08;SD&#xff09;因为其开源特性&#xff0c;有着较高的受欢迎程度&#xff0c;并且基于SD的开源社区及教程、插件等&#xff0c;都是所有工具里最多的。基于SD&#xff0c;有不同的操作界面&#xff0c;可以理解为一个工具的不…

基于zigbee的广告牌安全监测系统设计与实现(论文+源码)

1.系统方案 本次基于Zigbee的广告牌安全监测系统&#xff0c;使用Zigbee组网&#xff0c;一共具有2块板子&#xff0c;其中1块作为协调器&#xff0c;另1块作为终端。首先由协调器构建Zigbee网络&#xff0c;终端连上协调器网络后&#xff0c;每隔1秒钟采集一次传感器数据并通…

2024好用的骨传导耳机有哪些?精选这热门五款拒绝踩雷!

作为一名运动狂热者&#xff0c;我已经坚持运动八年了&#xff0c;在这八年运动时间里我最离不开的就是运动耳机了&#xff0c;一副好的运动耳机重要性可太多了&#xff0c;不仅更加可以提高我们的运动效率&#xff0c;还有更多元化的功能。运动耳机市场在这几年获得了长足的发…

Docker占用根目录/存储空间过多如何清理?

问题背景 使用df -h查看磁盘空间时发现根目录空间不多了&#xff0c;已使用96%&#xff0c;红色警告&#xff01;&#xff01;&#xff01; 于是使用df -h /* 一层一层定位&#xff0c;终于找到了一个大文件 9G多的文件夹&#xff0c;位置是&#xff1a; /var/lib/docker/o…

计算机毕业设计Hadoop+Spark抖音可视化 抖音舆情监测 预测算法 抖音爬虫 抖音大数据 情感分析 NLP 自然语言处理 Hive 机器学习 深度学习

技术栈&#xff1a;数据分析Spark、数据库Hive MySQL、服务器djano、爬虫requests jieba库中文分词&#xff0c;通俗来说&#xff0c;就是将一句(段)话按一定的规则(算法)拆分成词语、成语、单个文字。 中文分词是很多应用技术的前置技术&#xff0c;如搜索引擎、机器翻译、词…

Unity(2022.3.41LTS) - 视频

目录 零. 简介 一、视频支持的格式和平台 二、视频播放组件 三、视频播放控制 四、视频与游戏交互 五、性能和优化 零. 简介 在 Unity 中&#xff0c;视频播放是一项强大的功能&#xff0c;可以为游戏和应用程序增添丰富的多媒体体验。 一、视频支持的格式和平台 Unit…

Linux系统练习笔记【完整版】

✨博客主页&#xff1a; https://blog.csdn.net/m0_63815035?typeblog &#x1f497;《博客内容》&#xff1a;.NET、Java.测试开发、Python、Android、Go、Node、Android前端小程序等相关领域知识 &#x1f4e2;博客专栏&#xff1a; https://blog.csdn.net/m0_63815035/cat…

力扣1235.规划兼职工作

力扣1235.规划兼职工作 动态规划 二分 将所有工作按照结束时间排序f[i]表示前i个工作可获取的最大收益状态转移&#xff1a;取第i个工作&#xff0c;f[i] profit[i] f[j]&#xff0c;其中j为结束时间小于i的开始时间的最大数不取第i个工作&#xff0c;f[i] f[i-1]可以通过二…

CSS中的align-content属性:实现垂直居中的新方式

引言 在CSS的漫长发展历程中&#xff0c;垂直居中一直是一个令人头疼的问题。不过&#xff0c;好消息是&#xff0c;到了2024年&#xff0c;CSS终于引入了一种新的方式来实现垂直居中&#xff0c;那就是使用align-content属性。本文将详细介绍align-content的使用方式&#xff…

SYN6288语音合成模块的简单应用

文章目录 一、前言二、硬件1.原理图1.1 对外引脚说明1.2 电源供电参考电路1.3 复位电路和状态指示电路1.4 扬声器输出1.5 外接高速晶振 三、软件1.系统构成框图2.通讯方式&#xff1a;异步串行通讯&#xff08;UART&#xff09;接口3.芯片回传4. 通信帧定义及通信控制4.1 命令帧…

【Eureka】搭建Eureka Server,实现服务注册和服务发现

1. Eureka介绍 Eureka是NetflixOSS套件中关于服务注册和发现的解决⽅案.SpringCloud对Eureka进⾏了集成,并作为优先推荐⽅案进⾏宣传,虽然⽬前Eureka2.0已经停⽌维护,新的微服务架构设计中,也不再建议使用,但是⽬前依然有⼤量公司的微服务系统使⽤Eureka作为注册中⼼. 官方文…

指尖疯2024年下半年软考报名快报:赛程过半,你报名成功了吗?

周一早上好&#xff0c;新的一周&#xff0c;新的9月&#xff01; 特别提醒&#xff1a;青海和上海&#xff0c;这两个“海”今天截止报名&#xff01;已经结束报名的地区已经增长到了13个&#xff0c;目前2024年下半年软考报名已经过半&#xff0c;考虑到还有审核时间以及报名…

原生冻结进程分析(U)

一、概要 1.定义&#xff1a; 当应用切换到后台并且没有其他活动时&#xff0c;系统会在一定时间内通过状态判断&#xff0c;将进程 ID 迁移到冻结的 cgroup 节点上&#xff0c;实现冻结 CACHE 应用。这项功能可以减少活跃缓存应用在后台存在时所消耗的 CPU 资源&#xff0c;从…

Nginx安全性配置

文章目录 引言I Nginx简单的安全性配置禁止特定的HTTP方法限制URL长度禁止某些用户代理限制请求速率连接限制禁止访问某些文件类型II 常见的安全规则防御CC攻击User-Agent过滤GET-URL过滤GET-参数过滤POST过滤(sql注入、xss攻击 )引言 Nginx本身并不具备复杂的防火墙规则定制…

NASA数据集:ASTER全球数字海拔模型(GTEM)V003

ASTER Digital Elevation Model V003 简介 ASTER全球数字海拔模型&#xff08;GTEM&#xff09;第3版&#xff08;ASTG TM&#xff09;提供了地球陆地区域的全球数字海拔模型&#xff08;TEM&#xff09;&#xff0c;空间分辨率为1角秒&#xff08;赤道处水平位置约30米&…