题目:
给定两个二进制字符串,返回他们的和(用二进制表示)。
样例
a = 11
b = 1
返回 100
代码:
#include<bits/stdc++.h> using namespace std; const int maxn=1e3+5; char a[maxn],s1[maxn],s2[maxn]; int main() { scanf("%s",s1); scanf("%s",s2); int len1=strlen(s1); int len2=strlen(s2); if(len1<len2) swap(s1,s2);//s1保存较长串 len1=strlen(s1); len2=strlen(s2); int add=0; len1--,len2--; while(len2>=0) { add+=s1[len1]-'0'+s2[len2]-'0'; a[len1]=add%2+'0'; add/=2; len1--,len2--; } while(add&&len1>=0) { add+=s1[len1]-'0'; a[len1]=add%2+'0'; add/=2; len1--; } if(add)//最后还有进位则后移加入进位即可 { for(int i=strlen(a);i>0;i--) a[i]=a[i-1]; a[0]=add+'0'; } printf("%s\n",a); return 0; }