注意:比赛结束了。我只是想知道解决这个问题的其他方法
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
答案 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