专栏文章
题解:P11798 【MX-X9-T2】『GROI-R3』XOR
P11798题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miq5fn28
- 此快照首次捕获于
- 2025/12/03 23:15 3 个月前
- 此快照最后确认于
- 2025/12/03 23:15 3 个月前
题目传送门
思路
1.异或和的性质:
从 到 的异或和 可以通过模 的结果快速计算:
2.目标值的计算
从 到 的异或和可以转换为 ,因此我们需要找到 使得 。
3.四种情况处理
情况一:
目标值 为 ,找到 且在区间内。
情况二:
目标值 为 ,找到 且在区间内。
情况三:
目标值 ,检查 是否在区间内。
情况四:
目标值 ,检查 是否在区间内。
代码
CPP#include<bits/stdc++.h>
#define int long long
using namespace std;
int yihuo(int n){
if(n%4==0){
return n;
}else if(n%4==1){
return 1;
}else if(n%4==2){
return n+1;
}else{
return 0;
}
}
signed main(){
int T;
cin>>T;
while(T--){
int l,r,k,x;
cin>>l>>r>>k>>x;
int y=yihuo(k-1);
int cnt=y^x;
int ans=-1;
if(cnt%4==0){
if(l<=cnt&&cnt<=r)ans=cnt;
}
if(ans==-1&&cnt%4==3){
if(l<=cnt-1&&cnt-1<=r)ans=cnt-1;
}
if(ans==-1&&cnt==0){
if(l+(3-l%4+4)%4<=r)ans=l+(3-l%4+4)%4;
}
if(ans==-1&&cnt==1){
if(l+(1-l%4+4)%4<=r)ans=l+(1-l%4+4)%4;
}
if(ans!=-1)cout<<ans<<"\n";
else cout<<"-1\n";
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...