题目
令
l
e
n
=
r
−
l
+
1
len=r-l+1
len=r−l+1,注意
k
k
k和
l
e
n
len
len要区分开
1
:
a
n
s
=
0
1:ans=0
1:ans=0,条件:选
4
4
4个连续的数,末尾是
10
,
11
,
00
,
01
10,11,00,01
10,11,00,01
2
:
a
n
s
=
0
2:ans=0
2:ans=0,条件:选
3
3
3个数,分别为:
0 1 1 1 1 1 1 1 1 1 1 1 1(
>
=
l
>=l
>=l)
1 0 1 1 1 1 1 1 1 1 1 1 1(
<
r
<r
<r)
1 1 0 0 0 0 0 0 0 0 0 0 0(
<
=
r
<=r
<=r)
3
:
a
n
s
=
1
3:ans=1
3:ans=1,条件:选
2
2
2个相邻的数,末尾是
0
,
1
0,1
0,1
4
:
a
n
s
=
l
异
或
r
4:ans=l异或r
4:ans=l异或r,条件:
l
异
或
r
<
l
l异或r<l
l异或r<l且
l
!
=
r
l!=r
l!=r
5
:
a
n
s
=
l
5:ans=l
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);
}