校内模拟赛 T1 区间求和

题目描述

简要题意:现在有 $n$ 次询问,每次询问给定 $[l,r]$,求 $[l,r]$ 异或和/与和/或和

$n\le 5\times 10^6, 0\le l\le r< 2^{64}$

Solution

异或显然,或和与的公式就不在推导了,直接给出

1
2
3
if (opt == 1) write(l & -1ull << __lg(l ^ r)); // 与
else if (opt == 2) write(r | (1ull << __lg(l ^ r)) - 1); // 或
else write(get_xor(r) ^ get_xor(l) ^ l);