#include <iostream>
using
namespace
std;
string sub(string s)
{
int
n = s.size();
for
(
int
i = n - 1; i >= 0; i--) {
if
(s[i] ==
'0'
) {
s[i] =
'1'
;
}
else
{
s[i] =
'0'
;
break
;
}
}
return
s;
}
string ad(string s)
{
int
n = s.size();
int
carry = 0;
for
(
int
i = n - 1; i >= 0; i--) {
if
(s[i] ==
'1'
) {
carry = 1;
s[i] =
'0'
;
}
else
{
carry = 0;
s[i] =
'1'
;
break
;
}
}
if
(carry) {
s =
'1'
+ s;
}
return
s;
}
string xor_finder(string s)
{
int
n = s.size() - 1;
int
val = s[n] -
'0'
;
val = val + (s[n - 1] -
'0'
) * 2;
if
(val == 0) {
return
s;
}
else
if
(val == 1) {
s =
'1'
;
return
s;
}
else
if
(val == 2) {
return
(ad(s));
}
else
if
(val == 3) {
s =
'0'
;
return
s;
}
}
string final_xor(string L, string R)
{
while
(L.size() != R.size()) {
L =
'0'
+ L;
}
string ans =
""
;
for
(
int
i = 0; i < L.size(); i++) {
if
(L[i] ==
'0'
&& R[i] ==
'0'
) {
ans +=
'0'
;
}
else
if
(L[i] ==
'0'
&& R[i] ==
'1'
|| L[i] ==
'1'
&& R[i] ==
'0'
) {
ans +=
'1'
;
}
else
{
ans +=
'0'
;
}
}
return
ans;
}
string xorr(string L, string R)
{
L = sub(L);
L = xor_finder(L);
R = xor_finder(R);
string ans = final_xor(L, R);
return
ans;
}
int
main()
{
string L =
"10"
, R =
"10000"
;
cout << xorr(L, R) << endl;
return
0;
}
Original page link
Best Cool Tech Gadgets
Top favorite technology gadgets
0 comments:
Post a Comment