\(x\%2^{w+1}\)一共有\(2^{w+1}\)情况,
那么在\(w\)为上为\(1\)的情况有\(2^w\)种,\[ans =x/2^{w+1} * 2^w + max(x\%2^{w+1} -2^w+1, 0)\]
ll get(ll x, ll w){
if(x < (1ll<<w)) return 0;
ll ans = (x / (1ll<<(w+1))) * ((1ll<<w) );
ll tmp = x % (1ll<<(w+1));
ans += max(tmp - (1ll<<w) + 1, 0ll);
return ans;
}
原文:https://www.cnblogs.com/zhuyou/p/12285509.html