2025华为OD机试题库(按算法分类):2025华为OD统一考试题库清单(持续收录中)以及考点说明(Python/JS/C/C++)。
专栏导读
本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。
一、题目描述
正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。
数据范围:1≤a,b≤100000 。
二、输入描述
输入两个正整数A和B。
三、输出描述
输出A和B的最小公倍数。
四、测试用例
测试用例1
1、输入
4 6
2、输出
12
测试用例2
1、输入
21 6
2、输出
42
五、解题思路
- 从输入中读取两个正整数A和B;
- 初始化一个变量C为A;
- 调用函数gcb,传入A、B和C作为参数;
- 在gcb函数中,首先判断A是否能被B整除,如果可以,则A即为最小公倍数,返回A;
- 如果A不能被B整除,则递归调用gcb函数,传入A+C、B和C作为新的参数,继续求解;
- 继续递归,直到找到A能被B整除的情况,返回A作为最小公倍数;
- 在主函数中,输出最小公倍数;
六、Python算法源码
# 导入sys模块,用于读取标准输入数据
import sys
# 定义函数计算最大公约数,使用欧几里得算法
def gcd(a, b):
# 如果b为0,则返回a,否则递归调用
return a if b == 0 else gcd(b, a % b)
def main():
# 从标准输入读取所有输入,并以空白字符分割得到列表
a, b = map(int, sys.stdin.read().split())
# 调用gcd函数计算a和b的最大公约数
g = gcd(a, b)
# 根据公式计算最小公倍数,注意先除后乘避免溢出
lcm = a // g * b
# 输出最小公倍数
print(lcm)
# 当此模块作为主程序执行时,调用main函数
if __name__ == "__main__":
main()
七、JavaScript算法源码
"use strict";
// 定义函数计算最大公约数,使用欧几里得算法
function gcd(a, b) {
// 如果b等于0,则返回a,否则递归调用gcd函数
return b === 0 ? a : gcd(b, a % b);
}
// 主函数,用于读取输入并计算最小公倍数
function main() {
// 定义变量存储输入数据
let input = '';
// 监听标准输入的数据事件,累积数据到input变量
process.stdin.on('data', function(chunk) {
input += chunk;
});
// 当输入结束后执行回调函数
process.stdin.on('end', function() {
// 使用正则表达式去除多余空格,并分割字符串得到数组
let tokens = input.trim().split(/\s+/);
// 将第一个和第二个元素转为整数,分别赋值给a和b
let a = parseInt(tokens[0], 10);
let b = parseInt(tokens[1], 10);
// 计算a和b的最大公约数
let g = gcd(a, b);
// 根据公式计算最小公倍数:先除后乘,防止溢出
let lcm = a / g * b;
// 输出结果到标准输出
console.log(lcm);
});
}
// 调用主函数执行程序
main();
八、C算法源码
#include <stdio.h>
// 定义函数计算最大公约数,使用欧几里得算法
long long gcd(long long a, long long b) {
// 如果b为0,则a为最大公约数,直接返回a
if (b == 0)
return a;
else
// 否则递归调用gcd函数,计算b和a%b的最大公约数
return gcd(b, a % b);
}
int main() {
long long a, b;
// 从标准输入读取两个正整数
scanf("%lld %lld", &a, &b);
// 调用gcd函数计算a和b的最大公约数
long long g = gcd(a, b);
// 根据公式计算最小公倍数:lcm = a / g * b
long long lcm = a / g * b;
// 将结果输出到标准输出
printf("%lld\n", lcm);
return 0; // 返回0表示程序正常结束
}
九、C++算法源码
#include <iostream>
using namespace std;
// 定义函数计算最大公约数,使用欧几里得算法
long long gcd(long long a, long long b) {
// 如果b为0,则返回a,否则递归调用gcd函数
return b == 0 ? a : gcd(b, a % b);
}
int main() {
long long a, b;
// 从标准输入读取两个正整数
cin >> a >> b;
// 调用gcd函数计算a和b的最大公约数
long long g = gcd(a, b);
// 根据公式计算最小公倍数:先除后乘避免溢出
long long lcm = a / g * b;
// 将结果输出到标准输出,并换行
cout << lcm << endl;
return 0; // 返回0表示程序正常结束
}
🏆下一篇:华为OD机试真题 - 简易内存池(Python/JS/C/C++ 2024 E卷 200分)
🏆本文收录于,华为OD机试真题(Python/JS/C/C++)
刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。