[ARC129A] Smaller XOR
Description
输入
Solution
发现一个性质:对于每一位
于是我们便可以枚举
注意:由于本题的数据范围,记得开 long long,并且使用位运算的时候记得将 1 改为 1LL,否则会出错。
Code
#include <bits/stdc++.h>
#define int long long
using namespace std;
int n, l, r, ans;
signed main() {
cin >> n >> l >> r;
for (int i = 0; (1LL << i) <= n; i++) {
int s = 1LL << i, t = (s << 1LL) - 1; // 两个 x 的区间
if ((s & n) == 0) {
continue;
}
int L = max(l, s), R = min(r, t);
ans = max(ans, ans + R - L + 1);
}
cout << ans;
return 0;
}