题意

给你,求之间所有数字的异或。

题解

首先区间之间的异或怎么计算呢,若知道之间的异或值,那么最后的答案就是
那么如何计算的异或值呢,我们可以打个表先来看看。

1  1
2  3
3  0
4  4
5  1
6  7
7  0
8  8
9  1
10 11
11 0
12 12
13 1
14 15
15 0
16 16
17 1
18 19
19 0
20 20

会发现规律实际上很明显,以4个一组即,所以对于给定的我们对其取模4就知道的异或值了,后续就好做了。

复杂度

时间复杂度
空间复杂度

代码

class Solution {
public:
    /**
     * 
     * @param l long长整型 
     * @param r long长整型 
     * @return long长整型
     */
    long long f(long long n)
    {
        if(n%4==1)
            return 1;
        else if(n%4==2)
            return n+1;
        else if(n%4==3)
            return 0;
        else
            return n;
    }
    long long XOR(long long l, long long r) {
        // write code here
        return f(r)^f(l-1);
    }
};