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<bits/stdc++.h>
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))<<endl;
    return 0;
} 

猜你喜欢

转载自www.cnblogs.com/AC-AC/p/12183078.html