Codeforces 768B Code For 1 (簡化版線段樹)

#include<iostream>
using namespace std;
typedef long long ll;
ll query(ll n,ll L, ll R ,ll l, ll r)
{
    if(R<l||L>r||n==0)
        return 0;
    if(n==1)return 1;
    ll mid = (l+r)>>1;
    return query(n>>1,L,R,l,mid-1)+query(n&1,L,R,mid,mid)+query(n>>1,L,R,mid+1,r);
}

int main()
{
    ll n;
    ll l;ll r;
    cin>>n>>l>>r;
    ll x = n;
    ll len = 1;
    while(x>1)
    {
        x >>=1;
        len = len *2+1;
    }
    cout<<query(n,l,r,1,len)<<endl;
    return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章