描述
题解
这个题可以状压 dp 解,看到一个很玄学的解法——按规律解,虽然这种解法很容易漏,但是 51Nod 有数据,可以补漏,不过很伤点头盾……心疼我的点头盾,花了好几十~~~
代码
#include <iostream>
using namespace std;
typedef long long ll;
ll l, r, k;
int main()
{
cin >> l >> r >> k;
if (k >= 4)
{
if (l + 3 < r || (l + 3 == r && !(l & 1)))
{
cout << 0 << endl;
return 0;
}
}
if (k >= 3)
{
int t = 0;
while (l >> t)
{
t++;
}
ll k = 3LL << (t - 1);
if (k <= r)
{
cout << 0 << endl;
return 0;
}
}
if (k >= 2)
{
if (!(l & 1) || l + 1 < r)
{
cout << 1 << endl;
return 0;
}
else if ((l ^ r) < l)
{
cout << (l ^ r) << endl;
return 0;
}
}
cout << l << endl;
return 0;
}