首页 > 试题广场 >

进制转换

[编程题]进制转换
  • 热度指数:54219 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个十进制数 M ,以及需要转换的进制数 N 。将十进制数 M 转化为 N 进制数。

当 N 大于 10 以后, 应在结果中使用大写字母表示大于 10 的一位,如 'A' 表示此位为 10 , 'B' 表示此位为 11 。

若 M 为负数,应在结果中保留负号。

数据范围: 
要求:空间复杂度O(log_MN),时间复杂度 O(log_MN)
示例1

输入

7,2

输出

"111"
示例2

输入

10,16

输出

"A"
return M.toString(N).toUpperCase()
发表于 2021-12-12 15:24:53 回复(0)
一行代码解决

function solve( M ,  N ) {
    // write code here
    return M.toString(N).toUpperCase()
}
module.exports = {
    solve : solve
};

发表于 2021-09-04 14:47:46 回复(0)
return M.toString(N).toUpperCase();
toString() 可以把把一个 Number 对象转换为一个字符串,并返回结果。
其中 toUpperCase()可以把字符串中的小写字母换成大写
发表于 2021-08-16 19:42:29 回复(0)
不喜api做题的勿进!
js可以很简单的做任意进制的转化,核心函数是全局函数parseInt(str,radix)Number.toString(radix);
1.parseInt(str,radix); 将字符串str按照radix进制编码方式转换为10进制返回,没有radix,默认为10;此方法把任意进制字符串转为10进展返回。
2.Number的一个方法:toString(radix);返回表示该数字的指定进制形式的字符串。(把10进制的数据转为指定进制,并以字符串形式输出)
所以本题用Number方法
function solve( M ,  N ) {
    // write code here
   return  M.toString(N).toUpperCase()
}

发表于 2020-12-28 15:33:04 回复(0)
一张图解释进制转换解题思路:(ps:如果是负数,直接提取负符号即可)


/**
 * 进制转换
 * @param M int整型 给定整数
 * @param N int整型 转换到的进制
 * @return string字符串
 */
function solve( M ,  N ) {
    // write code here
    let str = '';
    let absn = Math.abs(M);
    const keyMap = {10: 'A', 11: 'B', 12: 'C', 13: 'D', 14: 'E', 15: 'F'};
    while(absn > 0) {
        let s = absn%N;
        if(keyMap[s]) {
            str += keyMap[s];
        }
        else {
            str += s;
        }
        absn = Math.floor(absn/N)
    }
    const dest = str.split('').reverse().join('') || '0';
    return M >= 0 ? dest : '-' + dest ;
}
module.exports = {
    solve : solve
};




发表于 2020-12-13 14:24:07 回复(0)
/**
 * 进制转换
 * @param M int整型 给定整数
 * @param N int整型 转换到的进制
 * @return string字符串
 */
function solve( M ,  N ) {
    // write code here
    if (M === 0) return 0
    return M.toString(N).toUpperCase()
}
发表于 2020-12-12 15:36:44 回复(0)

问题信息

上传者:牛客332641号
难度:
6条回答 6239浏览

热门推荐

通过挑战的用户

查看代码