首页 > 试题广场 >

实现大数的加法

[编程题]实现大数的加法
  • 热度指数:827 时间限制:C/C++ 5秒,其他语言10秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
给定两个字符串形式的非负整数 num1和num2 ,计算它们的和。


输入描述:
两个字符串形式的非负整数


输出描述:
对于每组测试数据,输出字符串,不包含前导零和多余空格。
示例1

输入

13254 4354325

输出

4367579

备注:
1. num1 和num2 的长度都小于 5100;
2. num1 和num2 都只包含数字 0-9;
3. num1 和num2 都不包含任何前导零。
var arr = readline().split(' ')
var s1 = arr[0], s2 = arr[1], i = s1.length-1, j = s2.length -1
var carry = 0,res = []
while(i >= 0 || j >= 0 || carry){
    let num1 = i >= 0 ? parseInt(s1[i]) : 0
    let num2 = j >= 0 ? parseInt(s2[j]) : 0
    let sum = num1 + num2 + carry
    carry = Math.floor(sum / 10)
    res.push(sum % 10)
    i--
    j--
}
console.log(res.reverse().join(''))

发表于 2021-09-18 16:00:25 回复(0)
把js的样板改一下就行了
const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;

void async function () {
    // Write your code here
    while(line = await readline()){
        let tokens = line.split(' ');
        let a = BigInt(tokens[0]);
        let b = BigInt(tokens[1]);
        console.log((a + b).toString());
    }
}()


发表于 2023-07-03 20:08:47 回复(0)
function sumStr(s1='',s2='',carry=0){
    let total= Number(s1.charAt(s1.length - 1))+Number(s2.charAt(s2.length - 1))+carry
    let newCarry = 0
    if(total>=10){newCarry = 1}
    if(s1.length<=1&&s2.length<=1){return `${newCarry===1?1:''}`+`${total%10}`}
    let res1 = s1.slice(0,s1.length-1)
    let res2 = s2.slice(0,s2.length-1)
    return `${sumStr(res1,res2,newCarry)}`+`${total%10}`
}
var arr =readline().split(' ')
console.log(sumStr(arr[0],arr[1]))

发表于 2022-03-31 18:20:07 回复(0)
return ((+n)+(+m))+''
发表于 2022-03-23 15:07:18 回复(0)
#include<bits/stdc++.h>
using namespace std;
void solve(string s,string m){
    int len_i = s.size()-1;
    int len_j = m.size()-1;
    if(len_i<len_j){
        swap(s, m);
        swap(len_i,len_j);
    }
    int t = len_i - len_j;
    int array = 0;
    int temp = 0;
    while(t> 0){
     m = '0' +m;
     t --;
    }
    for(int i =len_i;i>=0;--i){
        temp = s[i] - '0' + m[i] - '0' +array;
        if(temp>=10){
            temp -= 10;
            array = 1;
        }else{
            array = 0;
        }
        s[i] = temp + '0';
    }
    if(array == 1){
        s = '1' +s;
    }
    cout<<s;
}
int main(){
    string s,m;
    cin>>s>>m;
    solve(s,m);
    return 0;
}
发表于 2021-11-02 16:02:34 回复(0)
let test=readline().split(" ")
let num1=test[0]
let num2=test[1]
let carry=0
let res=''
let i=num1.length-1
let j=num2.length-1
while(i>=0||j>=0){
    let temp=Number(num1[i])+Number(num2[j])+carry
    if(i<0){
        temp=Number(num2[j])+carry
        i=0
    }
    if(j<0){
        temp=Number(num1[i])+carry
        j=0
    }
    carry=temp>=10? 1 : 0
    res=(temp%10)+res
    i--
    j--
}
print(carry>0? `${carry}${res}`:`${res}`)
发表于 2021-08-17 15:23:46 回复(0)
const readline = require("readline")
const rl=readline.createInterface({
    input: process.stdin, 
    output: process.stdout
});
let inArr = [];
rl.on("line",line=>{
    line=line.trim();
    inArr=line.split(' ');
    console.log(add2Str(inArr[0],inArr[1]));
})

function add2Str(num1,num2){
    let i=num1.length,j=num2.length;
    const ans=[];
    let add=0;
    while(i>0||j>0||add>0){
        let n1=num1[i-1]==null?0:Number(num1[i-1])
        let n2=num2[j-1]==null?0:Number(num2[j-1]);
        ans.push((n1+n2+add)%10);
        add=Math.floor((n1+n2+add)/10);
        i--;
        j--;
    }
    return ans.reverse().join('');
}



发表于 2021-05-07 21:16:49 回复(0)
function solution(num1) {
    var arr = num1.split(',');
    var a1 = arr[0].split('').reverse();
    var a2 = arr[1].split('').reverse();
    if (a1.length >= a2.length) {
        var brr = [];
        brr[0] = 0;
        for (var i = 0; i <= a1.length - 1; i++) {
            if(a2[i]==null){
                a2[i]=0;
            }
            brr[i] = brr[i] + Number(a1[i]) + Number(a2[i]);
            if (brr[i] >= 10) {
                brr[i + 1] = 1;
            } else {
                brr[i + 1] = 0
            }
        }
    }else{
        var brr = [];
        brr[0] = 0;
        for (var i = 0; i <= a2.length - 1; i++) {
            if(a1[i]==null){
                a1[i]=0;
            }
            brr[i] = brr[i] + Number(a1[i]) + Number(a2[i]);
            if (brr[i] >= 10) {
                brr[i + 1] = 1;
            } else {
                if(i+1 <= a2.length - 1){
                    brr[i + 1] = 0
                }
            }
        }
    }
    brr=brr.reverse()
    if (brr[0] == 0) {
        brr.shift(0);
    }
    var smg = '';
    for (let i = 0; i < brr.length; i++) {
        smg = smg + brr[i]
    }
    return smg;
}
solution('12,34');
发表于 2021-04-24 16:45:35 回复(2)