在不使用 +、-、* 和 % 运算符的情况下检查数字是否为 4 的倍数。
def multipleFour(n):
if n == 1:
return False
XOR = 0
for i in range(n):
XOR = XOR ^ 1
return XOR == n
multipleFour(20)
我的答案返回 False
请您参考如下方法:
您在for 循环 和xor 语句 中弄错了。应该是这样的——
def multipleFour(n):
if n == 1:
return False
XOR = 0
for i in range(1, n+1):
XOR = XOR ^ i
return XOR == n
multipleFour(20)
即你的循环必须运行 i=1 到 i=n 而不是 i=0 到 i=n-1。而且必须是xor = xor ^ i
编辑:
评论中指出,for i in range(1, n+1)不满足不使用+的条件,但稍作修改,这个事情可以解决为-
def multipleFour(n):
if n == 1:
return False
XOR = n
for i in range(1, n):
XOR = XOR ^ i
return XOR == n
multipleFour(20)
