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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 自动化测试框架[Cypress PO模式]

    自动化测试框架[Cypress PO模式]【附源码】在Cypress中并不认为PO是个很好的模式,Cypress认为跨页面共享逻辑是一个反模式(Anti-Pattern),在Cypress中,它提供了很多方式,允许用户通过更简单的方式直接设置被测应用程序达到的待测试状态,不需要再不同页面一遍又一遍的执行相通操作

    2022年6月1日
    39
  • linux nginx启动停止命令_重启后没有nginx

    linux nginx启动停止命令_重启后没有nginx目录一、启动/usr/local/nginx/sbin/nginx-c/usr/local/nginx/conf/nginx.conf二、停止1、从容停止(1)查看进程号:ps-ef|grepnginx(2)杀死进程:kill-quitxxxx2、快速停止(1)查看进程号:ps-ef|grepnginx(2)杀死进程:kill-termxxxx/kill-intxxxx3、强制停止:pkill-9nginx三、重启1…

    2022年10月18日
    3
  • pta集合相似度_结构相似度

    pta集合相似度_结构相似度原题链接输入样例:33 99 87 1014 87 101 5 877 99 101 18 5 135 18 9921 21 3输出样例:50.00%33.33%#include<bits/stdc++.h>#define x first#define y second#define send string::nopsusing namespace std;typedef long long ll;const int N = 1e4 + 10;cons

    2022年8月8日
    5
  • PHP和Python如何选择?或许可以考虑这三个问题

    PHP和Python如何选择?或许可以考虑这三个问题

    2021年10月10日
    37
  • 缓存穿透、缓存击穿、缓存雪崩区别和解决方案[通俗易懂]

    一、缓存处理流程   前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。     二、缓存穿透    描述:    缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大不存在的数据。这时的用户很可能是攻击者,攻击会导…

    2022年4月3日
    58
  • 树莓派开发环境搭建(树莓派5)

    在本系列文章的第一部分中,我们将在一台树莓派Pi3ModelB上安装并运行一个以太坊区块链客户端。毫无疑问,区块链绝对是当前的热点。之所以会这样,很大程度上是因为比特币以及其他加密货币让很多人一夜暴富。但是,区块链的应用并不仅限于加密货币领域,考虑到其去中心化以及防篡改等特性,区块链技术还可以用到IoT应用中。因此,除了加密货币和安全交易之外,以太坊平台还可以提供一种分布式的计算平台。在这篇…

    2022年4月12日
    180

发表回复

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

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