Skip to content

Instantly share code, notes, and snippets.

@Wiper-R
Created October 29, 2021 07:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Wiper-R/bb6dc0cf67573c6185c2effb4d3cefbf to your computer and use it in GitHub Desktop.
Save Wiper-R/bb6dc0cf67573c6185c2effb4d3cefbf to your computer and use it in GitHub Desktop.
#include <bits/stdc++.h>
using namespace std;
string add_binary(int a, int b)
{
int carry = 0;
string ans = "";
while (a > 0 && b > 0)
{
if (a % 2 == 0 && b % 2 == 0)
{
ans.insert(0, to_string(carry));
carry = 0;
}
else if ((a % 2 == 0 && b % 2 == 1) || (a % 2 == 1 && b % 2 == 0))
{
if (carry)
{
ans.insert(0, to_string(0));
carry = 1;
}
else
{
ans.insert(0, to_string(1));
carry = 0;
}
}
else
{
ans.insert(0, to_string(carry));
carry = 1;
}
a /= 10;
b /= 10;
}
while (a > 0)
{
if (carry == 1)
{
if (a % 2 == 1)
{
ans.insert(0, to_string(0));
carry = 1;
}
else
{
ans.insert(0, to_string(1));
carry = 0;
}
}
else
{
if (a % 2 == 1)
{
ans.insert(0, to_string(1));
carry = 0;
}
else
{
ans.insert(0, to_string(0));
carry = 0;
}
}
a /= 10;
}
while (b > 0)
{
if (carry == 1)
{
if (b % 2 == 1)
{
ans.insert(0, to_string(0));
carry = 1;
}
else
{
ans.insert(0, to_string(1));
carry = 0;
}
}
else
{
if (b % 2 == 1)
{
ans.insert(0, to_string(1));
carry = 0;
}
else
{
ans.insert(0, to_string(0));
carry = 0;
}
}
b /= 10;
}
if (carry == 1)
{
ans.insert(0, to_string(1));
carry = 0;
}
return ans;
}
int main()
{
int a, b;
cin >> a >> b;
cout << add_binary(a, b) << endl;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment