1 条题解
-
0
C++ :
#include <algorithm> #include <cstdio> using namespace std; int L, r; long long ans; pair<int, long long> cal2(int n, int p) { if (n == 0) { return {1 - p, 0}; } if (n == 1) { return {1, p}; } return {(n + 1) / 2, 1LL * n * (n + 1) / 4}; } pair<int, long long> cal(int n, int p) { if (n <= 1) { return cal2(n, p); } long long x = 1LL << (31 - __builtin_clz(n)); auto L = cal2(x - 1, p); auto r = cal(n - x, 1 - p); return {L.first + r.first, L.second + r.second + x * r.first}; } int main() { scanf("%d%d", &L, &r); ans -= cal(L - 1, 1).second; ans += cal(r, 1).second; printf("%lld\n", ans); return 0; }
信息
- ID
- 5658
- 时间
- 400ms
- 内存
- 512MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者