UVALive-7279 - Sheldon Numbers【暴力】


UVALive-7279 - Sheldon Numbers



题目链接:7279

题目大意:给出[a,b],问在这个范围内的十进制数字,转化为二进制之后,形式满足ABAB…AB或者ABAB…A的有几个。(A表示连续的1,B表示连续的0)

第一种形式A的个数 > 0,B的个数 > 0.

第二种形式A的个数>0,B的个数可以等于0

题目思路:暴力出所有满足情况的数字,然后二分查找大于等于a,b的数字的下标。代码细节需要注意很多。

以下是代码:

#include <bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
vector <ll> vec;
void init()
{
    //只有a
    ll num = 1;
    vec.push_back(num);
    for (int i = 0; i < 63; i++)
    {
        num = (num << 1) | 1;
        vec.push_back(num);
    }

    for (int i = 1; i <= 63; i++)
    {
        for (int j = 1; (i + j) <= 63; j++)
        {
            ll num = 1;
            for (int k = 0; k < i - 1; k++)
            {
                num = (num << 1) | 1;
            }
            ll A = num;

            num = num << j;

            if ((i+j)<= 63) {vec.push_back(num);}
            if ((i+j + i) <= 63) {vec.push_back((num << i) | A);}
            int len1 = i,len2 = j,len = i + j;
            while(1)
            {
                if ((len1 + len2) + len <= 63)
                {
                    vec.push_back((num << len) | num);
                }
                else break;
                num = (num << len) | num;
                if (((len1 + len2) + len + i) <= 63)
                {
                    vec.push_back((num << i) | A);
                }
                len1 += i;
                len2 += j;
            }
        }
    }
    sort(vec.begin(),vec.end());
}
int main()
{
    ll n,m;
    init();
    while(cin >> n >> m)
    {
        int pos = lower_bound(vec.begin(),vec.end(),n) - vec.begin();
        int pos2 = upper_bound(vec.begin(),vec.end(),m) - vec.begin();
        cout << pos2 - pos<< endl;
    }
}
时间: 2024-10-06 06:21:02

UVALive-7279 - Sheldon Numbers【暴力】的相关文章

Gym 100299C &amp;&amp; UVaLive 6582 Magical GCD (暴力+数论)

题意:给出一个长度在 100 000 以内的正整数序列,大小不超过 10^ 12.求一个连续子序列,使得在所有的连续子序列中, 它们的GCD值乘以它们的长度最大. 析:暴力枚举右端点,然后在枚举左端点时,我们对gcd相同的只保留一个,那就是左端点最小的那个,只有这样才能保证是最大,然后删掉没用的. UVaLive上的数据有问题,比赛时怎么也交不过,后来去别的oj交就过了. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000&qu

UVaLive 3401 Colored Cubes (暴力)

题意:给定n个立方体,让你重新涂尽量少的面,使得所有立方体都相同. 析:暴力求出每一种姿态,然后枚举每一种立方体的姿态,求出最少值. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostrea

UVaLive 7461 Separating Pebbles (暴力)

题意:给出平面上的两类点,判断是否能画一条直线将两类点完全分割开来. 析:用暴力去枚举任意两点当作直线即可. 代码如下: #pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <string> #include <cstdlib> #include <cmath> #include <iostream> #inclu

UVA - 10396 Vampire Numbers 暴力+打表

题目大意:给出n,要求你输出所有符合规则的n位数 规则如下,这个n位数由两个n/2位数相乘得到,并且满足 1.这n位数为偶数 2.这两个n/2位数上的所有数刚好组成了这n位数 3.两个n/2位数不能都是10的倍数 解题思路:因为输入只有4,6,8,所以先预处理,暴力枚举4,6,8的情况,然后打表 #include<cstdio> #include<set> #include<cmath> using namespace std; #define maxn 10 set&

Gym 101128F Sheldon Numbers(网络流)

[题目链接] http://codeforces.com/gym/101128/attachments [题目大意] 给出一张地图,分为高地和低地,高低地的交界线上划有红线, 现在要开小车跨过每条红线,当改变小车开的地形的时候,比如从高地开往低地, 就需要多耗油A单位,也可以花B的耗油量抬高地形或者降低地形, 问跨越所有红线所用的最少耗油量 [题解] 我们发现对于每条红线,我们需要花A去跨越地形或者花B去抬高或者降低地形, 所以我们将不同地形划分为两个集合,构成二分图, 红线左右块连流量为A的边

杭电ACM分类

杭电ACM分类: 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDIATE DECODABILITY

UESTC 2014 Summer Training #19

A.UVALive 6161 去迟了,队友已经开始写了,应该是个水题,贴个队友代码 #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<map> #include<set> #include<vector> #include<algorithm> #inclu

2015暑假训练赛个人赛(8.5)

  ID Origin Title   96 / 114 Problem A UVALive 4167 Parity  水题1 60 / 124 Problem B UVALive 4168 Lampyridae Teleportae  水题3 3 / 11 Problem C UVALive 4169 Hex Tile Equations   17 / 41 Problem D UVALive 4170 The Bridges of San Mochti   16 / 36 Problem E

【转】对于杭电OJ题目的分类

[好像博客园不能直接转载,所以我复制过来了..] 1001 整数求和 水题1002 C语言实验题——两个数比较 水题1003 1.2.3.4.5... 简单题1004 渊子赛马 排序+贪心的方法归并1005 Hero In Maze 广度搜索1006 Redraiment猜想 数论:容斥定理1007 童年生活二三事 递推题1008 University 简单hash1009 目标柏林 简单模拟题1010 Rails 模拟题(堆栈)1011 Box of Bricks 简单题1012 IMMEDI