当n和x是整数并且n> = x时,x的多少个值将是n + x = n XOR x?

时间:2017-10-21 21:43:29

标签: python python-3.x bit-manipulation xor

注意:比赛结束了。我只是想知道解决这个问题的其他方法

n = int(input())
if n == 0:
    print('1')
else:
    print(1<<(str(bin(n)).count('0') - 1)) 

Chef在他的数字逻辑设计课程中学习了2位二进制加法器。他对XOR运算符感到惊讶,他认为a + b = a xor b,其中a和b是整数,xor是Bitwise XOR运算符。

厨师老师最喜欢的号码是n。厨师的老师情绪高涨,他给厨师一个整数x(x <= n)并要求厨师计算n + x来测试他的二元加法理解。厨师回答n xor x。

输入 单个整数n。

示例输入:0 样本输出:1

样本输入:5 样本输出:2

1 个答案:

答案 0 :(得分:2)

建议的解决方案:

n = int(input())
if n == 0:
    print('1')
else:
    print(pow(2, (str(bin(n)).count('0')-1)))

当n = 0时,它打印1,当n = 5时,它输出2等等。

上面的解决方案正在做同样的事情:在k的二进制表示中计算零的数量n,忽略前导零,并返回2 < sup> k 作为答案,因为任何具有任意数量的这些位的任何整数x都将有资格获得n ^ x == n + x