刚学OI 1ms 的萌新写的二进制加法
#include<bits/stdc++.h>
using namespace std;
int n , m;
string s1 , s2;
int a[100005] , b[100005] , c[100005] , ans , len;
int main(){
cin >> n >> m;
while(n){
s1 += (n % 2 + '0');
n /= 2;
}
while(m){
s2 += (m % 2 + '0');
m /= 2;
}
for(int i=1;i<=s1.size();i++){
a[i] = s1[s1.size()-1] - '0';
}
for(int i=1;i<=s2.size();i++){
b[i] = s2[s2.size()-1] - '0';
}
for(int i=1;i<=max(s1.size(),s2.size());i++){
c[i] += a[i] + b[i];
c[i+1] += c[i] / 2;
c[i] %= 2;
}
len = max(s1.size(),s2.size());
while(c[len+1]){
len++;
c[len+1] += c[len] / 2;
c[len] %= 2;
}
for(int i=1;i<=len;i++){
long long tmp = 1 << (i - 1);
ans += c[i] * tmp;
}
cout << ans;
return 0;
}