输入两个用字符串 str 表示的整数,求它们所表示的数之和。
数据范围:
BigInt居然不能识别,可惜了~
const a = BigInt(readline()); const b = BigInt(readline()); console.log(a + b + '');
const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let list = []; rl.on('line', function (line) { list.push(line); if(list.length==2){ let a = list[0]; let b = list[1]; //可以用进位式大数加法,也可以用BigInt console.log((BigInt(a)+BigInt(b))+''); list = []; } });
const readline = require('readline') const rl = readline.createInterface({ input: process.stdin, output: process.stdout }) const inputArr = [] rl.on('line', function(input) { inputArr.push(input) }) // 大数求和 function bigNumerSum(numA, numB) { // 不做这个过不了所有测试用例 numA = numA.trim() numB = numB.trim() // 找出更长的长度 let maxLen = numA.length > numB.length ? numA.length : numB.length // 两个数达到相同位数 前面补0 numA = numA.padStart(maxLen, '0') numB = numB.padStart(maxLen, '0') let carry = 0 // 进位 let sum = '' // 和 for(let i=maxLen-1; i>=0; i--) { // 从最后一位开始 let s = Number(numA[i]) + Number(numB[i]) s += carry carry = s < 10 ? 0 : 1 sum = (s%10)+sum } return carry === 0 ? sum : '1'+sum } rl.on('close', function() { const res = [] for(let i=0; i<inputArr.length;) { let numA = inputArr[i], numB = inputArr[i+1] let sum = bigNumerSum(numA, numB) res.push(sum) i+=2 } res.forEach(s => console.log(s)) process.exit(0) })
function func (num1, num2) { let len1 = num1.length let len2 = num2.length let min = "" let max = "" if (num1.length >= num2.length) { max = num1 min = num2 } else { max = num2 min = num1 } let flag = false let res = "" let dig1 = "" let dig2 = "" for (let i = 1; i <= min.length; i++) { dig1 = num1.substr(len1 - i, 1) dig2 = num2.substr(len2 - i, 1) let tmp = parseInt(dig1) + parseInt(dig2) // console.log(dig1, dig2) if (flag) { tmp += 1 } if (tmp >= 10) { flag = true tmp = String(tmp).substr(1) } else { flag = false tmp = String(tmp) } // console.log(tmp) res = `${tmp}${res}` } if (max.length !== min.length) { let pre = parseInt(max.substr(0, max.length - min.length)) if (flag) { pre += 1 } return `${String(pre)}${res}` } else { if (flag) { return `1${res}` } else { return res } } }
var readline=require("readline"); var r1=readline.createInterface({ input:process.stdin, output:process.stdout }); var data=[]; r1.on('line',function(line){ line=line.trim(); data.push(line); if(data.length===2){ var tmp=Math.max(data[0].length,data[1].length); var arr1=data[0].split('').reverse(); var arr2=data[1].split("").reverse(); var result=new Array(tmp+1); var sign=0; var temp; for(var i=0;i<result.length;i++){ if(!arr1[i]){arr1[i]=0;} if(!arr2[i]){arr2[i]=0;} temp=(arr1[i]-0)+(arr2[i]-0)+sign; if(temp>=10){sign=1; result[i]=temp%10;} else{sign=0; result[i]=temp;} } if(result[tmp]==0) result.pop(); result=result.reverse().join(''); console.log(result); data=[]; } })js的确可以算很大很大的数,然而结果却是科学记数法,并且进行了省略,弄了半天也没有办法禁止使用科学计数法,索性就自己写了一个,用的是数组,还是挺简单的。