超大数相加

超大数相加

 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}
process.stdin.resume(); process.stdin.setEncoding('utf-8'); let input = ''; process.stdin.on('data', (data) => { input += data; }); process.stdin.on('end', () => { let inputArray = input.trim().split(' '); // 去除首尾空白并按空格分割 let A = inputArray[0]; let B = inputArray[1]; // 调用大整数相加函数 let result = addLargeNumbers(A, B); // 输出结果 console.log(result); process.exit(); }); /** * 大整数相加函数 * @param {string} num1 - 第一个大整数的字符串表示 * @param {string} num2 - 第二个大整数的字符串表示 * @return {string} - 两个大整数相加后的结果字符串 */ function addLargeNumbers(num1, num2) { // 将两个字符串按从低位到高位反转,便于逐位相加 let reversedNum1 = num1.split('').reverse(); let reversedNum2 = num2.split('').reverse(); let maxLength = Math.max(reversedNum1.length, reversedNum2.length); let carry = 0; // 进位 let result = []; for (let i = 0; i < maxLength; i++) { let digit1 = i < reversedNum1.length ? parseInt(reversedNum1[i], 10) : 0; let digit2 = i < reversedNum2.length ? parseInt(reversedNum2[i], 10) : 0; let sum = digit1 + digit2 + carry; carry = Math.floor(sum / 10); // 计算进位 result.push(sum % 10); // 当前位的值 } if (carry > 0) { result.push(carry); // 如果最高位有进位,加入结果中 } // 将结果数组反转回正确顺序,并拼接成字符串 return result.reverse().join(''); }

Powered By 可尔物语

浙ICP备11005866号-12