标签:ace com code acm c++ out 题解 test 区间
题意:求区间\([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;
}
标签:ace com code acm c++ out 题解 test 区间
原文地址:https://www.cnblogs.com/AC-AC/p/12183078.html