1process.stdin.resume(); 2process.stdin.setEncoding('utf-8'); 3let input = ''; 4 5process.stdin.on('data', (data) => { 6 input += data; 7}); 8 9process.stdin.on('end', () => { 10 let inputArray = input.trim().split(' '); // 去除首尾空白并按空格分割 11 let A = inputArray[0]; 12 let B = inputArray[1]; 13 14 // 调用大整数相加函数 15 let result = addLargeNumbers(A, B); 16 17 // 输出结果 18 console.log(result); 19 20 process.exit(); 21}); 22 23/** 24 * 大整数相加函数 25 * @param {string} num1 - 第一个大整数的字符串表示 26 * @param {string} num2 - 第二个大整数的字符串表示 27 * @return {string} - 两个大整数相加后的结果字符串 28 */ 29function addLargeNumbers(num1, num2) { 30 // 将两个字符串按从低位到高位反转,便于逐位相加 31 let reversedNum1 = num1.split('').reverse(); 32 let reversedNum2 = num2.split('').reverse(); 33 34 let maxLength = Math.max(reversedNum1.length, reversedNum2.length); 35 let carry = 0; // 进位 36 let result = []; 37 38 for (let i = 0; i < maxLength; i++) { 39 let digit1 = i < reversedNum1.length ? parseInt(reversedNum1[i], 10) : 0; 40 let digit2 = i < reversedNum2.length ? parseInt(reversedNum2[i], 10) : 0; 41 42 let sum = digit1 + digit2 + carry; 43 carry = Math.floor(sum / 10); // 计算进位 44 result.push(sum % 10); // 当前位的值 45 } 46 47 if (carry > 0) { 48 result.push(carry); // 如果最高位有进位,加入结果中 49 } 50 51 // 将结果数组反转回正确顺序,并拼接成字符串 52 return result.reverse().join(''); 53}
Copyright ©2010-2022 比特日记 All Rights Reserved.
Powered By 可尔物语