从 x 到 y 的索引中打印 XOR 元素(XOR Range)
print XOR elements from the indices ranging from x to y (XOR Range)
如果我有一些像 [2,6,2,9,7,4]
这样的数组,我发现从左到 right.it 的给定范围的 Xor 将适用于小输入但给出大输入的时间复杂度错误。
#Python Code for Xor Range
from functools import reduce
from operator import xor
arry=[2,6,2,9,7,4]
print(reduce(xor,arry[left:right]))
请帮助解决较大输入(如 10^9)的时间复杂度错误。problem link
ress = [0]
rese = [0]
b=input().split()
if b[0]=='1':
ress.append(ress[-1]^int(b[1]))
elif b[0]=='2':
rese.append(rese[-1]^int(b[1]))
else:
l = int(b[1])
r = int(b[2])
n = len(ress)-1
val = 0
if l <= n:
val ^= ress[n-l+1]
else:
val ^= rese[l-n-1]
if r<=n:
val ^=ress[n-r]
else:
val ^=rese[r-n]
print(val)
如果我有一些像 [2,6,2,9,7,4]
这样的数组,我发现从左到 right.it 的给定范围的 Xor 将适用于小输入但给出大输入的时间复杂度错误。
#Python Code for Xor Range
from functools import reduce
from operator import xor
arry=[2,6,2,9,7,4]
print(reduce(xor,arry[left:right]))
请帮助解决较大输入(如 10^9)的时间复杂度错误。problem link
ress = [0]
rese = [0]
b=input().split()
if b[0]=='1':
ress.append(ress[-1]^int(b[1]))
elif b[0]=='2':
rese.append(rese[-1]^int(b[1]))
else:
l = int(b[1])
r = int(b[2])
n = len(ress)-1
val = 0
if l <= n:
val ^= ress[n-l+1]
else:
val ^= rese[l-n-1]
if r<=n:
val ^=ress[n-r]
else:
val ^=rese[r-n]
print(val)