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

For how many values of x will n + x = n XOR x when n and x are whole numbers and n>=x?

注意:比赛是 over.I 只是想知道解决这个问题的其他方法

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

Chef 在他的数字逻辑设计中研究了 2 位二进制加法器 class。他对 XOR 运算符感到惊奇,他认为 a + b = a xor b,其中 a 和 b 是整数,xor 是按位异或运算符。

厨师老师最喜欢的数字是n。 Chef 的老师很生气,他给 Chef 一个整数 x (x <= n) 并要求 Chef 计算 n + x 以测试他对二进制加法的理解。厨师回答 n xor x。

输入 单个整数 n.

样本input:0 样本 output:1

样本input:5 样本 output: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 等等。

它做的事情与上面的解决方案做的一样:计算 n 的二进制表示中零的数量 k,忽略前导零和 returns 2k 作为答案,因为任何整数 x 打开了任意数量的这些位 - 将符合 n ^ x == n + x