Description
Problem A: XOR
Given two integers S and F, what is the XOR (exclusive-or) of all numbers between S and F (inclusive)?
Input
The first line of input is the integer T, which is the number of test cases (1 ≤ T ≤ 1000). T lines follow, with each line containing two integers S and F (1 ≤ S ≤ F ≤ 1 000 000 000).
Output
For each test case, output the (decimal) value of the XOR of all numbers between S and F, inclusive.
Sample Input
5
3 10
5 5
13 42
666 1337
1234567 89101112Sample Output
8
5
39
0
89998783从1到n的连续异或和sum:
n%4==1 sum=1;
n%4==2 sum=n+1;
n%4==3 sum=0;
n%4==0 sum=n;
有了规律瞬间变水题
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int t;
    long long a,b;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%lld%lld",&a,&b);
        long long tmp;
        if(b%4==1) tmp=1;
        else if(b%4==2) tmp=b+1;
        else if(b%4==3) tmp=0;
        else if(b%4==0) tmp=b;
        a--;
        if(a%4==1) tmp^=1;
        else if(a%4==2) tmp^=a+1;
        else if(a%4==3) tmp^=0;
        else if(a%4==0) tmp^=a;
        cout<<tmp<<'\n';
    }
    return 0;
}

 京公网安备 11010502036488号
京公网安备 11010502036488号