二进制求和

二进制求和

 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.split('\n'); 11 let a = inputArray[0]; 12 let b = inputArray[1]; 13 14 // 为了处理长度不一致的情况,对较短字符串前面补0 15 let maxLength = Math.max(a.length, b.length); 16 a = a.padStart(maxLength, '0'); 17 b = b.padStart(maxLength, '0'); 18 19 let carry = 0; // 进位 20 let result = ''; 21 22 // 从低位到高位逐位相加 23 for (let i = maxLength - 1; i >= 0; i--) { 24 let sum = parseInt(a[i], 2) + parseInt(b[i], 2) + carry; 25 carry = Math.floor(sum / 2); // 计算进位 26 result = (sum % 2).toString() + result; // 当前位的值 27 } 28 29 // 如果最高位还有进位,需要加上 30 if (carry > 0) { 31 result = carry.toString() + result; 32 } 33 34 console.log(result); 35 process.exit(); 36});
process.stdin.resume(); process.stdin.setEncoding('utf-8'); let input = ''; process.stdin.on('data', (data) => { input += data; }); process.stdin.on('end', () => { let inputArray = input.split('\n'); let a = inputArray[0]; let b = inputArray[1]; // 为了处理长度不一致的情况,对较短字符串前面补0 let maxLength = Math.max(a.length, b.length); a = a.padStart(maxLength, '0'); b = b.padStart(maxLength, '0'); let carry = 0; // 进位 let result = ''; // 从低位到高位逐位相加 for (let i = maxLength - 1; i >= 0; i--) { let sum = parseInt(a[i], 2) + parseInt(b[i], 2) + carry; carry = Math.floor(sum / 2); // 计算进位 result = (sum % 2).toString() + result; // 当前位的值 } // 如果最高位还有进位,需要加上 if (carry > 0) { result = carry.toString() + result; } console.log(result); process.exit(); });

Powered By 可尔物语

浙ICP备11005866号-12