XOR_SUM

XOR_SUM

题意:求区间\([L,R]\)之间的连续异或和。

链接:xor_sum

题解:打表找规律,规律当结论记住。

\[ 0\bigoplus1=1 \]

\[ 0\bigoplus1\bigoplus2=3 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3=0 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3\bigoplus4=4 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3\bigoplus4\bigoplus5=1 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3\bigoplus4\bigoplus5\bigoplus6=7 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3\bigoplus4\bigoplus5\bigoplus6\bigoplus7=0 \]

\[ 0\bigoplus1\bigoplus2\bigoplus3\bigoplus4\bigoplus5\bigoplus6\bigoplus7\bigoplus8=8 \]

很明显:4个数一循环,1,n+1,0,n
#include
using namespace std;
typedef long long ll;
ll f(ll n){
    if(n%4==0)
        return n;
    else if(n%4==1)
        return 1;
    else if(n%4==2)
        return n+1;
    else if(n%4==3)
        return 0;
}
int main(void){
    ll l,r;
    cin >> l >> r;
    cout<<(f(l-1)^f(r))<

你可能感兴趣的:(XOR_SUM)