CF1567B 题解
题目传送门
思路
最小值为
所以答案最小为
设
若
否则,由于异或具有已知
-
,输出 。 -
,输出 。(序列中不能有 )
写出来之后,有些代码出现了
for(int i=1;i<a;i++)p^=i;
这一行的时间复杂度是
将
所以我们需要寻求更快的解法:
则求
long long y(int k){
if(k%4==1)return 1;
if(k%4==2)return k+1;
if(k%4==3)return 0;
if(k%4==0)return k;
}
依此写出代码,此题终。
#include<iostream>
using namespace std;
long long a,b,t,ans,p;
long long y(int k){
if(k%4==1)return 1;
if(k%4==2)return k+1;
if(k%4==3)return 0;
if(k%4==0)return k;
}
int main(){
cin>>t;
while(t--){
cin>>a>>b;p=0;
if(y(a-1)==b){
cout<<a<<endl;
}
else{
if((y(a-1)^b)!=a)cout<<a+1<<endl;
else cout<<a+2<<endl;
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】