输入两个字符串a和b,字符串内容为二进制数字,求两个字符串相加的结果,加法计算方法以二进制方式计算,并返回对应的字符串结果。要求程序尽可能的高效。示例如下:/**
* @param a = "1101"
* @param b = "1100"
* @return "11001"
*/
public String add(String a, String b){ }
数据范围: 
输入两个字符串a和b,字符串内容为二进制数字,求两个字符串相加的结果,加法计算方法以二进制方式计算,并返回对应的字符串结果。要求程序尽可能的高效。示例如下:/**
* @param a = "1101"
* @param b = "1100"
* @return "11001"
*/
public String add(String a, String b){ }
输入两个字符串,如"1101", "1100"
"11001"
1101 1100
11001
0 1
1
#include <bits/stdc++.h> using namespace std; int main(){ string a, b, s=""; cin>>a>>b; int m = a.length(), n = b.length(); int c = 0; if(m>n) b = string(m-n, '0') + b; else a = string(n-m, '0') + a; for(int i=max(m,n)-1;i>=0;i--){ c += a[i]-'0' + b[i]-'0'; s = char((c&1)+'0') + s; c >>= 1; } if(c==1) s = '1' + s; cout<<s<<endl; return 0; }
"""" 进制间转换 ↓ 2进制 8进制 10进制 16进制 2进制 - bin(int(x, 8)) bin(int(x, 10)) bin(int(x, 16)) 8进制 oct(int(x, 2)) - oct(int(x, 10)) oct(int(x, 16)) 10进制 int(x, 2) int(x, 8) - int(x, 16) 16进制 hex(int(x, 2)) hex(int(x, 8)) hex(int(x, 10)) - """ if __name__ == "__main__": a = [int(x, 2) for x in input().strip().split()] print(str(bin(sum(a)))[2:])
import java.util.*; //二进制的加法 public class Main3 { public static void main(String[] args){ Scanner sca = new Scanner(System.in); String[] str = sca.nextLine().split(" "); String a = str[0]; String b = str[1]; System.out.println(addBinary(a,b)); } public static String addBinary(String a, String b) { StringBuilder sb = new StringBuilder(); int aLen = a.length(); int bLen = b.length(); int max = Math.max(aLen, bLen); StringBuilder ar = new StringBuilder(a).reverse();//反转,因为两个数从低位开始相加 StringBuilder br = new StringBuilder(b).reverse(); boolean isCarry = false;//是否进位 for (int i = 0; i < max; i++) { char aChar = i >= aLeng ? '0' : ar.charAt(i); char bChar = i >= bLen ? '0' : br.charAt(i); if (aChar == '1' && bChar == '1') { sb.append(isCarry ? '1' : '0'); isCarry = true; } else if (aChar == '0' && bChar == '0') { sb.append(isCarry ? '1' : '0'); isCarry = false; } else { sb.append(isCarry ? '0' : '1'); } } if (isCarry) sb.append("1"); return sb.reverse().toString(); } }
#include <iostream> #include <string> using namespace std; int main(int argc, char const *argv[]) { string str1, str2; cin >> str1 >> str2; /* * 0 + 1 = 1 * 1 + 1 = 10 * 0 + 0 = 0 */ int carry = 0; int i = str1.length() - 1; int j = str2.length() - 1; string res(""); while(i >= 0 && j >= 0){ char a = str1[i--]; char b = str2[j--]; if((a == '0' && b == '1') || (a == '1' && b == '0')){ if(carry){ res = "0" + res; //有进位 } else{ res = "1" + res; //无进位 } } else if(a == '0' && b == '0'){ if(carry){ res = "1" + res; //有进位 carry = 0; } else{ res = "0" + res; //无进位 } } else if(a == '1' && b == '1'){ if(carry){ res = "1" + res; } else{ res = "0" + res; } carry = 1; //肯定有进位 } } if(i >= 0){ while(i >= 0){ if(str1[i] == '0'){ //该位为“0” if(carry){ res = "1" + res; carry = 0; } else{ res = "0" + res; } } else{ //该位为“1” if(carry){ res = "0" + res; } else{ res = "1" + res; } } --i; } if(carry){ res = "1" + res; } } else if(j >= 0){ while(j >= 0){ if(str1[j] == '0'){ //该位为“0” if(carry){ res = "1" + res; } else{ res = "0" + res; } } else{ //该位为“1” if(carry){ res = "0" + res; } else{ res = "1" + res; } } --j; } if(carry){ res = "1" + res; } } else{ //两个都走完 if(carry){ res = "1" + res; } } cout << res << endl; return 0; }
const readline = require('readline') const rl = readline.createInterface({ input: process.stdin, ouput: process.stdout }) rl.on('line', line=>{ let inArr = line.trim().split(' ') let s1 = +inArr[0], s2 = +inArr[1] //解法一 // let res = (parseInt(s1,2) + parseInt(s2,2)).toString(2) //解法二 let res = (BigInt(`0b${s1}`)+BigInt(`0b${s2}`)).toString(2) console.log(res) })
import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str1 = scanner.next(); String str2 = scanner.next(); System.out.println(Integer.toBinaryString(Integer.valueOf(str1, 2) + Integer.valueOf(str2, 2))); } }
import sys messages = sys.stdin.readline().strip().split() num1 = messages[0] num2 = messages[1] num = int(num1,2)+int(num2,2) print(bin(num)[2:])
import java.util.*; public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); while(in.hasNext()){ String a=in.next(); String b=in.next(); System.out.println(add(a,b)); } } public static String add(String a,String b){ int p1=a.length()-1; int p2=b.length()-1; int carry=0; String ans=""; while(p1!=-1||p2!=-1||carry!=0){ int n1=(p1<0)?0:a.charAt(p1)-'0'; int n2=(p2<0)?0:b.charAt(p2)-'0'; int sum=n1^n2^carry; carry=((n1&n2)==1)?1:((n1^n2)&carry); ans=sum+ans; if(p1>=0)p1--; if(p2>=0)p2--; } return ans; } }
import java.util.Scanner; /** * @Date: 2020-05-02 21:31 * @version: 1.0 */ public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char[] ch1 = sc.next().toCharArray(); char[] ch2 = sc.next().toCharArray(); int l1=ch1.length-1,l2=ch2.length-1,l3=(l1>l2?l1:l2)+1; char[] r = new char[l3+1];//保存结果 r[l3] = '0'; int num = 0; while (l1>=0&&l2>=0){ num=ch1[l1]-'0'+ch2[l2]-'0'+r[l3]-'0'; if (num==0){ r[l3]='0'; r[l3-1]='0'; }else if (num==1){ r[l3]='1'; r[l3-1]='0'; }else if (num==2){ r[l3]='0'; r[l3-1]='1'; }else { r[l3]='1'; r[l3-1]='1'; } l1--;l2--;l3--; } while (l1>=0){ num=ch1[l1]-'0'+r[l3]-'0'; if (num==0){ r[l3]='0'; r[l3-1]='0'; }else if (num==1){ r[l3]='1'; r[l3-1]='0'; }else{ r[l3]='0'; r[l3-1]='1'; } l1--;l3--; } while (l2>=0){ num=ch2[l2]-'0'+r[l3]-'0'; if (num==0){ r[l3]='0'; r[l3-1]='0'; }else if (num==1){ r[l3]='1'; r[l3-1]='0'; }else{ r[l3]='0'; r[l3-1]='1'; } l2--;l3--; } for (int i = 0;i<r.length;i++){ if (r[i]=='1'){ for (;i<r.length;i++) System.out.print(r[i]); } } } }
import sys from collections import deque if __name__ == "__main__": #sys.stdin = open("input", "r") x, y = input().strip().split() if len(x) < len(y): x, y = y, x c = 0 ans = deque() y = '0'*(len(x)-len(y)) + y for i in range(-1, -len(x)-1, -1): t1 = int(x[i]) ^ int(y[i]) s1 = int(x[i]) and int(y[i]) t2 = t1 ^ c s2 = t1 and c c = s1 or s2 ans.appendleft(str(t2)) if c != 0: ans.appendleft(str(c)) print("".join(ans))
#include <bits/stdc++.h> using namespace std; const int maxlen = 1010; char a[maxlen], b[maxlen], res[maxlen]; void reverseNum(char *s) { int l = 0, r = strlen(s) - 1; while(l < r) { char temp = s[l]; s[l] = s[r]; s[r] = temp; l++, r--; } } void add(char *a, char *b) { int i = 0, j = 0, k = 0; int lena = strlen(a), lenb = strlen(b); int curDigit = 0, acc = 0; while(i < lena && j < lenb) { curDigit = (a[i] - '0') + (b[j] - '0') + acc; acc = curDigit / 2; res[k++] = (curDigit % 2) + '0'; i++, j++; } while(i < lena) { curDigit = (a[i] - '0') + acc; acc = curDigit / 2; res[k++] = (curDigit % 2) + '0'; i++; } while(j < lenb) { curDigit = (b[j] - '0') + acc; acc = curDigit / 2; res[k++] = (curDigit % 2) + '0'; j++; } if(acc == 1) res[k++] = acc + '0'; res[k] = '\0'; reverseNum(res); printf("%s\n", res); } int main() { int i, j; scanf("%s %s", a, b); reverseNum(a); reverseNum(b); add(a, b); return 0; }
#include <iostream> (720)#include <string> using namespace std; int main(){ string s1,s2,ans=""; cin>>s1>>s2; int idx=0,l1=s1.size()-1,l2=s2.size()-1; while (l1>=0 || l2>=0){ int c1=l1>=0?s1[l1]-'0':0,c2=l2>=0?s2[l2]-'0':0; int p=c1+c2; if (p==2){ if (p+idx==3){ ans="1"+ans; }else{ ans="0"+ans; } idx=1; } else if (p==1){ if (p+idx==2){ ans="0"+ans; idx=1; }else{ ans="1"+ans; idx=0; } }else{ if(p+idx==1){ ans="1"+ans; }else{ ans="0"+ans; } idx=0; } l1--; l2--; } if (idx==1) ans="1"+ans; cout<<ans; return 0; } //python:print(bin(sum(map(lambda x:int(x,2),input().split())))[2:])