zoukankan      html  css  js  c++  java
  • UVA

    UVA - 13022 Sheldon Numbers

    二进制形式满足ABA,ABAB数的个数(A为一定长度的1,B为一定长度的0)。

    其实就是寻找在二进制中满足所有的1串具有相同的长度,所有的0串也具有相同的长度,并且在给定范围内的个数。

    位运算。通过分析不难发现,所有解不会很大,因此我们可以暴力,用两个for分别枚举0串和1串的长度,然后交替放入一个值内(注意先放1),同时更新答案。

    将值存入set,发现所有满足条件的个数为4809(4810)。

    ps:因为这里的2^63大于long long的范围,but也满足条件,在操作时无法对其进行模拟。本题数据并没有这种情况,可能是无意为之。

    更为严谨的代码需要将2^63考虑在内(做一下特判),以下代码暂且按4809计算。

    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    
    set<ll> v;
    
    void init(){
        for(int i=1;i<=63;i++){
            for(int j=1;j<=63;j++){
                int len=0,t=0;
                ll x=0ll;
                while(len<63){
                    if(t==0){
                        if(len+i>63) break;
                        t=1;
                        x<<=i;
                        x|=(1ll<<i)-1;
                        v.insert(x);
                        len+=i;
                    }
                    else{
                        if(len+j>63) break;
                        t=0;
                        x<<=j;
                        v.insert(x);
                        len+=j;
                    }
                }
            }
        }
    }
    int main()
    {
        init();
        ll x,y;
        set<ll>::iterator it;
        while(~scanf("%lld%lld",&x,&y)){
            ll ans=0;
            for(it=v.begin();it!=v.end();it++){
                if(x<=*it){
                    if(*it>y) break;
                    ans++;
                }
            }
            printf("%lld
    ",ans);
        }
        return 0;
    }
  • 相关阅读:
    Less:优雅的写CSS代码
    线程池(ThreadPool)
    TiDB
    Docker实现CentOS容器SSH远程登录
    Oracle-Hints详解
    Oracle sql执行计划解析
    引擎基本服务接口API介绍
    ssh远程连接docker中linux(ubuntu/centos)
    自制操作系统
    kafka-net
  • 原文地址:https://www.cnblogs.com/yzm10/p/9647174.html
Copyright © 2011-2022 走看看