2019ICPC 徐州 A题 题解:打表过后可以发现连续的4个异或为0,所以小区间直接暴力,大区间我们来移动我们的左右端点来进行枚举就行了 。 #include<bits/stdc++.h> #define int long long using namespace std; const int inf=0x3f3f3f3f3f3f3f3f; int solve(int l,int r) { int res=0; if(r-l+1<=10){ for(int i=l;i<=r;i++) res^=i; return res; } else { while(l%4!=0){ res^=l; l++; } while(r%4!=3){ res^=r; r--; } return res; } } signed main() { int t; scanf("%lld",&t); while(t--){ int res=-1; int a,b,c; scanf("%lld%lld%lld",&a,&b,&c); for(int i=0;i<=3;i++){ for(int j=0;j<=3;j++){ int L=a+i; int R=b-j; if(solve(L,R)<=c) res=max(res,R-L+1); } } if(res!=0) printf("%lld\n",res); else puts("-1"); } }