题目
令 len=r−l+1,注意 k和 len要区分开
1:ans=0,条件:选 4个连续的数,末尾是 10,11,00,01
2:ans=0,条件:选 3个数,分别为:
0 1 1 1 1 1 1 1 1 1 1 1 1( >=l)
1 0 1 1 1 1 1 1 1 1 1 1 1( <r)
1 1 0 0 0 0 0 0 0 0 0 0 0( <=r)
3:ans=1,条件:选 2个相邻的数,末尾是 0,1
4:ans=l异或r,条件: l异或r<l且 l!=r
5:ans=l,无条件
#include<bits/stdc++.h>
using namespace std;
long long l,r,len;
int k,t;
int main(){
scanf("%lld%lld%d",&l,&r,&k);
len=r-l+1;
if (k>=4 && (len>4 || len==4 && !(l&1))) return puts("0"),0;
if (k>=3){
for (;l>>t;t++);
if ((3ll<<t-1)<=r) return puts("0"),0;
}
if (k>=2){
if (len>2 || len==2 && !(l&1)) return puts("1"),0;
if ((l^r)<l) return printf("%lld",l^r),0;
}
printf("%lld",l);
}