首页 > 试题广场 >

大数加法

[编程题]大数加法
  • 热度指数:194017 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
以字符串的形式读入两个数字,编写一个函数计算它们的和,以字符串形式返回。

数据范围:,字符串仅由'0'~‘9’构成
要求:时间复杂度
示例1

输入

"1","99"

输出

"100"

说明

1+99=100       
示例2

输入

"114514",""

输出

"114514"
function solve(s, t) {
    let res = [];
    let len = s.length > t.length ? s.length : t.length;
    let newS = s.padStart(len, 0),
        newT = t.padStart(len, 0);
    let n = 0;
    for (let i = len - 1; i >= 0; i--) {
        if (i === 0) {
            res.unshift(Number(newS[i]) + Number(newT[i]) + n);
        } else {
            res.unshift((Number(newS[i]) + Number(newT[i]) + n) % 10);
            n = Math.floor((Number(newS[i]) + Number(newT[i]) + n) / 10);
        }
    }
    return res.join('');
}
发表于 2023-06-05 19:44:40 回复(0)
function solves ,  t ) {
    // write code here
    return (BigInt(s) + BigInt(t)).toString() // 用 BigInt 直接转下就好了
}
module.exports = {
    solve : solve
};
发表于 2022-10-25 11:07:36 回复(0)
function solve(st) {
  // write code here
  return (BigInt(s) + BigInt(t)).toString().substring(0s.length+t.length);
}
发表于 2022-10-21 11:28:33 回复(0)
function solve( s ,  t ) {
    let carry=0,res='';
    let sArr = s.split(''),tArr=t.split('');
    while(sArr.length || tArr.length){
        let num = Number(sArr.pop() || 0) + Number(tArr.pop() || 0) + carry;
        if(num>9){
            carry = 1;
            num = num % 10
        }else{
            carry=0;
        }
        res = num + res;
    }
    if(carry){
        res = carry + res;
    }
    return res;
}

发表于 2022-08-14 23:47:02 回复(0)
function solve( s ,  t ) {
    // write code here
    // 首先取出大数中长度最长的
    let maxLength = Math.max(s.length,t.length);
    // 用0 补齐长度
    s = s.padStart(maxLength,0);
    t = t.padStart(maxLength,0);
    // 定义加法过程中需要用到的变量
    let a = 0;
    let b = 0; //进位
    let sum = "";
    for( let i = maxLength - 1; i >=0; i--){
        a = parseInt(s[i]) + parseInt(t[i]) + b;
        b = Math.floor(a/10);
        sum = a%10 + sum;
    }
    if( b == 1){
        sum = "1" + sum;
    }
    return sum;

发表于 2021-08-02 21:28:19 回复(0)