zoukankan      html  css  js  c++  java
  • CF768B 【Code For 1】

    链接:Miku

    -------------------------

    这道题可以用分治来做,因为显然对于每一个数,我们可以把它分成两部分,分别处理,然后求和

    不过唯一的问题是,n在操作最后的序列长度是多少,但是只要画个表,还是很显然的

    注意数据范围

    ----------------------------

    #include<iostream>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    long long n,ans,l,r,lenght=1,a;
    long long fz(long long ll ,long long rr,long long n){
        if(ll==rr)
        return n;
        long long mid=(ll+rr)>>1;
        long long anss=0;
        if(l<mid)
        anss+=fz(ll,mid-1,n>>1);
        if(r>mid)
        anss+=fz(mid+1,rr,n>>1);
        if(mid<=r&&mid>=l)
        anss+=(n%2);
        return anss;
    }
    int main(){
        cin>>n>>l>>r;
        long long k=log2(n)+1;
        long long temp=2;
        if(n>1)
        while(k){
            if(k%2)
            lenght*=temp;
            temp*=temp;
            k/=2;
        }
        else
        lenght=2;
        lenght--;
        cout<<fz(1,lenght,n);
        return 0;
    }
    Ac
  • 相关阅读:
    Ajax请求参数解释
    下拉菜单:‘点击外面关闭’的解决方案
    nc
    telnet
    arping
    traceroute
    ping
    ss
    netstat
    ip
  • 原文地址:https://www.cnblogs.com/For-Miku/p/12724927.html
Copyright © 2011-2022 走看看