CodeForces 484A Bits

CodeForces 484A Bits

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

意甲冠军:

10000询价  每次查询输入L和R(10^18)  在区间的二进制输出指示1大多数数字  1个数同样输出最小的

思路:

YY一下  认为后几位全是1的时候能保证1的个数多  那么怎样构造出这个数字呢??

将L和R都变成二进制  从高位到低位  L和R同样的那几位一定是不变的  由于要保证构造出的数字在区间内  然后分两种情况

一是L和R一直同样  那就没什么好说的了  就是它了

二是发现了有一位不同  这时R的那个位一定是1  L的一定是0  那么仅仅要把R的那个1变成0  然后把后面的全部位都变成1就构造出了数字  这时一定1最多吗??  不一定  比方  R=101111 L=100000  构造出来是100111  这时要特判一下  假设把差异的那一位变回1是不是超过R  不超过的话  变回来更优

代码:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<set>
#include<vector>
#include<queue>
#include<cstdlib>
#include<ctime>
#include<cmath>
using namespace std;
typedef long long LL;

int main() {
    int n;
    LL l, r, ans;
    scanf("%d", &n);
    while (n--) {
        cin >> l >> r;
        ans = 0;
        for (int i = 61; i >= 0; i--) {
            if ((r & (1LL << i)) && !(l & (1LL << i))) {
                ans |= (1LL << i);
                ans--;
                if (ans + (1LL << i) <= r)
                    ans += (1LL << i);
                break;
            } else {
                if (r & (1LL << i))
                    ans |= (1LL << i);
            }
        }
        cout << ans << endl;
    }
    return 0;
}

版权声明:本文博主原创文章。博客,未经同意不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116921.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 沪市和深市有什么区别?

    沪市和深市有什么区别?1、板块不同:沪市只有主板与B股;深市有主板、中小板、创业板和B股。2、股票代码不同:沪市主板是60开头,B股是900开头;深市主板是000开头,中小板是002开头、创业板是300开头、B股是200

    2022年8月3日
    7
  • integer constant is too large_unsigned int最大值

    integer constant is too large_unsigned int最大值用Integer存储sina的10位数字的uid,然后出现了input错,我以为Integer存10位数字没问题啊,确实能存10位,但最大值是2147483647,超过就不行了….

    2025年10月8日
    2
  • 【网站开发人员应该知道的61件事】[通俗易懂]

    有人在StackOverflow上发问,动手开发网站之前,需要知道哪些事情?…

    2022年1月18日
    36
  • Keil5下载安装教程并完成注册(配图操作)[通俗易懂]

    Keil5下载安装教程并完成注册(配图操作)[通俗易懂]Keil5安装教程以及安装包下载1、安装包下载2、下载并解压安装包,并按步骤完成安装2.1、运行安装程序,点击next2.2、勾选accept,点击next2.3、选择安装路径,点击next2.4、信息随意填写,点击next2.5、等待安装2.6、点击finish,完成安装3、打开注册机,完成注册3.1、以管理员身份运行keil53.2、点击licence3.3、打开注册机3.4、复制CID,选择arm,点击Generate3.5、复制生成的4步骤到keil5,点击ADD3.6、注册成功1、安装包下载微

    2022年5月23日
    61
  • 透视投影矩阵_透视投影矩阵推导知乎

    透视投影矩阵_透视投影矩阵推导知乎透视投影矩阵TheOpenGLPerspectiveProjectionMatrix关于透视投影矩阵的使用BuildingaBasicPerspectiveProjectionMatrixTheOpenGLPerspectiveProjectionMatrix首先,重要的是要记住OpenGL中的矩阵是使用列主顺序(而不是行主顺序)定义的。在所有的OpenGL书籍和参考文献中,OpenGL中使用的透视投影矩阵定义为:我们可以简单地转置矩阵,我们可以得到下面的以行向量为顺序的

    2022年10月5日
    6
  • 组合数学之容斥原理

    组合数学之容斥原理组合数学之容斥原理在组合数学中 容斥是常常被用到的 我们总用容斥求解一些带有条件的组合数 容斥原理 具有性质 A 和性质 B 的元素个数等同于具有性质 A 的个数和具有性质 B 的个数的和再减去同时具有性质 A 和性质 B 的元素的个数 数学公式表示为 A B A B A B 图形表示为其中黄色区域就是我们所求 同样以此类推对于三个性质来说其数学公式为 A B C A B C

    2025年6月19日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号