import sys
input=sys.stdin.readline
def solve():
n,q=map(int,input().split())
nums=list(map(int,input().split()))
for _ in range(q):
l,r=map(int,input().split())
if r-l>60:
print(0)
continue
if l==r:
print(nums[l-1])
continue
if l>=n:
print(nums[l-1])
continue
ans=nums[l-1]
for i in range(l,r):
#print(nums[i])
ans=ans+nums[i]-(ans^nums[i])
print(ans)
for _ in range(int(input())):
solve()
因为𝑥+𝑦=(𝑥⊕𝑦)+2×(𝑥&𝑦),所以 𝑓(𝑥,𝑦)=2×(𝑥&𝑦).
当l与r距离大于60时,按位与再右移必定为0
因此当r-l>60时直接返回0,其余情况暴力计算

京公网安备 11010502036488号