首页 > 试题广场 >

【字符串相乘】 问题描述: 给定两个以字符串形式表示的非负整

[问答题]
【字符串相乘】
问题描述: 
给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式。 

输入:字符串s 
输出:字符串ans 
输入样例1:num1 = "1", num2 = "4" 
输出样例1: "4" 
输入样例2:num1 = "123", num2 = "456" 
输出样例2: "56088" 
说明: 
num1 和 num2 的长度小于110。 
num1 和 num2 只包含数字 0-9。 
num1 和 num2 均不以零开头,除非是数字 0 本身。 
不能使用任何标准库的大数类型(比如 BigInteger)或直接将输入转换为整数来处理。 

输入描述: 
输入一行,两个字符串,由空格分割 

输出描述: 
输出一行,一个字符串 

输入样例: 
1 4 

输出样例: 
4
var num = prompt('请输入两个字符串,用空格分隔:').split(' ')
// var b=num.split(' ')
var num1=num[0];
var num2=num[1];
if((num1.length+num2.length<110) && (num1.indexOf('0')&&num2.indexOf('0')||(num1=='0'||num2=='0'))){
    console.log(num1*num2)
}
发表于 2022-06-14 14:41:10 回复(0)
function func(p){
    let [x, y] = p.split(' ');
    return ( x-0 * y-0) + "";

发表于 2022-09-25 14:08:08 回复(0)
发表于 2022-09-09 16:47:45 回复(0)
function multi(num1, num2) {
  if (num1 === "0" && num2 === "0") return "0";
  let _num1 = new Number(num1);
  let _num2 = new Number(num2);
  let _num3 = new Number(_num1 * _num2).toLocaleString();
  let _num4 = _num3.replace(/,/g, "");
  return _num4;
}

发表于 2022-08-01 15:36:07 回复(0)
const mutiply = (num1, num2) => {
  let res = 0
  for (let i = 0; i < num1.length; i++) {
    let weight1 = Math.pow(10, num1.length - 1 - i)
    for (let j = 0; j < num2.length; j++) {
      let weight2 = Math.pow(10, num2.length - 1 - j)
      res += num1[i] * weight1 * num2[j] * weight2
    }
  }
  return res
}
发表于 2023-08-11 17:02:41 回复(0)
md 能直接转换成number算,为什么不直接转换,非得用更难的方式实现,什么lj题
发表于 2023-03-27 18:13:44 回复(1)
let multipy=function(num1,num2){
  //小学乘法
  num1=num1.split('').map(c=>{return parseInt(c)});
  num2=num2.split('').map(c=>{return parseInt(c)});
  // console.log(num1,num2);
  let temp=0;//进位
  let res="";//中间结果
  let Res=0;//最终结果
  let a=0;//本位
  let b=0.1;
  for(let i=num2.length-1;i>=0;i--){
    for(let j=num1.length-1;j>=0;j--){
      a=num2[i]*num1[j]%10+temp;//本位数字
      if(a>=10)
      {
        a-=10;
        temp=Math.floor(num1[i]*num2[j]/10)+1;//a>10,进位+1
      }
      else{
        temp=Math.floor(num2[i]*num1[j]/10);
      }
      res=a+res;//把本位连接在中间结果之前
      
    }
    b=b*10; //中间结果第一次*1,第二次*10  三,100
    Res+=parseInt(res)*b; //最终结果加上中间结果
    res="";//中间结果置空
  }
  return Res.toString();
}
发表于 2022-08-24 18:03:08 回复(0)