设两个数字a和b使得a^b是n,给出了n值,我需要找到a和b。示例。
n=5
a=1 b=4 and a^b=5
similarly a=9 b=12
please help to find this.'
发布于 2020-08-26 15:45:04
以二进制形式写入这两个数字并逐位计算XOR
:
a = 9 1 0 0 1
b = 12 1 1 0 0
a ^ b = n 0 1 0 1 decimal 5
a ^ n = b 1 1 0 0
b ^ n = a 1 0 0 1
概括地说:
a w x y z
b w !x y !z
n 0 1 0 1
你可以取一个任意的a
,倒置两位,如图所示,得到b
,例如a ^ b = 5
。
发布于 2020-08-26 15:47:31
如果对a、和b的值没有约束,那么a可以是0,b等于nE 29
(因为具有零的数字的<代码>E 110xor<>E 211等于相同的数字)。
如果0,则可以将该值从1迭代到n,并将该值分配给a,则b的值将为n^a,检查bE 221
是否小于E 122
nE 223E 223
如果打印E 124a和E 126bE 227
int a,b,n;
a=-1;
b=-1;
cin>>n;
for(int i=1;i<=n;i++)
{
b=i^n;
if((b>0) && (b<=n))
{
a=i;
break;
}
}
cout<<a<<" "<<b;
https://stackoverflow.com/questions/63600847
复制相似问题