注意:比赛结束了。我只是想知道解决这个问题的其他方法
n = int(input())
if n == 0:
print('1')
else:
print(1<<(str(bin(n)).count('0') - 1))
Chef 在他的数字逻辑设计类(class)中学习了 2 位二进制加法器。他对 XOR 运算符感到惊讶,并认为 a + b = a xor b,其中 a 和 b 是整数,xor 是按位 XOR 运算符。
厨师的老师最喜欢的数字是n。 Chef 的老师很生气,他给了 Chef 一个整数 x (x <= n) 并要求 Chef 计算 n + x 以测试他对二进制加法的理解。厨师回答 n x 或 x。
输入 单个整数 n。
示例输入:0 示例输出:1
示例输入:5 示例输出: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
数量,忽略前导零,然后返回2k 作为答案,因为任何打开任意数量的这些位的整数 x
- 将符合 n ^ x == n + x
>
关于python - 当 n 和 x 是整数且 n>=x 时,对于 x 的多少个值,n + x = n 异或 x ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46868422/