华为od机试B卷复用【N进制减法】

该博客介绍了如何实现基于字符串的N进制减法,主要针对华为OD机试中的一道题目。文章详细阐述了题目的要求,包括输入输出描述以及示例。思路部分将引导读者理解算法,而code部分则可能包含了具体的代码实现。博客强调了输入限制,如进制范围、字符串长度以及不能以0开头的被减数和减数。
摘要由CSDN通过智能技术生成

目录

题目

思路

code


题目

主管期望你实现一个基于字符串的N机制的减法。

需要对输入的两个字符串按照给定的N进制进行减法操作,输出正负符号和表示结果的字符串。

输入描述: 输入:

三个参数。

第一个参数是整数形式的进制N值,N值范围为大于等于2、小于等于35。

第二个参数为被减数字符串;

第三个参数为减数字符串。有效的字符包括0-9以及小写字母a-z,字符串有效字符个数最大为100个字符,另外还有结尾的\0。

限制:

输入的被减数和减数,除了单独的0以外,不能是以0开头的字符串。

如果输入有异常或计算过程中有异常,此时应当输出-1表示错误。

输出描述: 输出:

2个。

其一为减法计算的结果,-1表示出错,0表示结果为整数,1表示结果为负数。

其二为表示结果的字符串。

示例1 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

2 11 1

输出

0 10

说明

按二进制计算 11 -1 ,计算正常,0表示符号为正数,结果为10

示例2 输入输出示例仅供调试,后台判题数据一般不包含示例

输入

8 07 1

输出

-1

说明

按8进制,检查到减数不符合非0前导的要求,返回结果为-1,没有其他结果内容。

思路

code

function fn(input) {
    
let token = input.split(" ");

let radix = parseInt( token[0]);

if( !(radix >=2 && radix<=35)){
    console.log(-1);
    return ;
}

let a = token[1];

let b = token[2];

if(a.length > 1 && a.charAt(0) == 0){
    console.log(-1);
    return ;
}

if(b.length > 1 && b.charAt(0) == 0){
    console.log(-1);
    return ;
}


let aNum = parseInt(a,radix);
let bNum = parseInt(b,radix);

if(aNum == bNum){
    console.log("0 0");
}else{
    console.log( (aNum<bNum?"-1 ":"1 ")+ (aNum-bNum).toString(2));
}


}

fn("2 1 11")
fn("2 11 1")
fn("8 07 1")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值