ACM模版

描述

题解

这个题可以状压 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;
}