题解
2026-05-30 13:55:29
发布于:重庆
37阅读
0回复
0点赞
用递归就彳亍
#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct info{
ll num, sum;
};
info f(int n, int p){
if (n == 0) return {1 - p, 0};
ll t = 1, s;
while (t <= n){
s = t;
t *= 2;
}
ll y = s - 1, n1, s1;
if (y == 0){
n1 = 1 - p;
s1 = 0;
}else if (y == 1){
n1 = 1;
s1 = (p == 1);
}else{
n1 = (y + 1) / 2;
s1 = y * (y + 1) / 4;
}
info a = f(n - s, 1 - p);
n1 += a.num;
s1 += s * a.num + a.sum;
return {n1, s1};
}
ll l, r;
int main(){
cin >> l >> r;
cout << f(r, 1).sum - f(l - 1, 1).sum;
return 0;
}
这里空空如也







有帮助,赞一个