首页 > 其他分享 >异或题

异或题

时间:2023-07-16 10:57:50浏览次数:28  
标签:101 int 010 异或 111 include

链接:https://ac.nowcoder.com/acm/contest/60932/G
来源:牛客网

有一只可爱的兔子被困在了密室了,密室里有两个数字,还有一行字:
只有解开密码,才能够出去。
可爱的兔子摸索了好久,发现密室里的两个数字是表示的是一个区间[L,R]
而密码是这个区间中任意选择两个(可以相同的)整数后异或的最大值。
比如给了区间[2,5] 那么就有2 3 4 5这些数,其中 2 xor 5=7最大 所以密码就是7。
兔子立马解开了密室的门,发现门外还是一个门,而且数字越来越大,兔子没有办法了,所以来求助你。
提示:异或指在二进制下一位位比较,相同则 0 不同则 1
例如2=(010)22=(010)_22=(010)2​ 5=(101)25=(101)_25=(101)2​
所以2 xor 5=(111)2=75=(111)_2=75=(111)2​=7

 

题解:找到最高位不同的数异或,反正这个数必然是二进制x个1,就是用二进制多一位减一即可。

#include <bits/stdc++.h>
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <queue>
#include <cmath>
#define int long long
using namespace std;
const int N=1e6+7;
::int32_t main(){
    int t;
    cin>>t;
    for(int i=1;i<=t;i++)
    {
        int a,b;
        cin>>a>>b;
        int sum=a^b;
        int ans=1;
        while (sum)
        {
            sum>>=1;
            ans<<=1;
        }
        cout<<ans-1<<endl;
    }
    return 0;
}

 

标签:101,int,010,异或,111,include
From: https://www.cnblogs.com/whatdo/p/17557560.html

相关文章

  • mysql 异或
    实现MySQL异或的步骤为了教会这位刚入行的小白如何实现MySQL异或,我们将按照以下步骤进行操作。首先,我们需要确保你已经安装了MySQL,并且已经创建了一个数据库和一个表。步骤步骤操作1连接到MySQL数据库2创建一个测试表3插入一些数据4执行异或查询现在,......
  • 逻辑运算记录(或运算、与运算、按位异或)
    或运算,都为1时才为1---------------------------------------------------------与运算,有1则为1-------------------------------------------------------按位异或,相同为0,不同为1......
  • [模板]01trie,维护异或最大值
    //查询异或最大值,每次插入和查询时间都是log(C)template<classT>classtrie01{vector<vector<T>>tree;public:trie01():tree(1,vector<T>(2,0)){}//插入待检查的数字voidinsert(Tx){intp=0;for(inti=sizeof......
  • 两个数组最小的异或值之和
    1.状态压缩+动态规划顺序不重要,依次枚举数组1的每个数,和数组2进行组合计算classSolution{public:intminimumXORSum(vector<int>&nums1,vector<int>&nums2){intn=nums1.size();if(judge(nums1)||judge(nums2)){intres=0;......
  • Nikitosh 和异或
    题面#include<iostream>#include<cstdio>#include<algorithm>#include<cmath>#include<cstring>usingnamespacestd;intbit[32];intn,a[5211314],sum[5211314];intl[5211314],r[5211314];structTrie{ inttrie[5211314&l......
  • Python实现字符串与指定密钥循环异或加解密
    异或运算在很多密码学算法中都有不同程度的应用,其运算特定在于一个数和另一个数连续异或两次仍得到原来的数。在实际使用中,因为要加密的信息和所使用的密钥在大多数情况下是不等长的,所以经常需要循环使用密钥。defcrypt1(source,key):'''source是要加密或解密的字符串,key是......
  • [科技] 异或哈希
    一个小问题Statement来源:https://www.luogu.com.cn/problem/T297472?contestId=91205给定字符串\(S\),求最长的连续子序列满足其中每个字符都出现了偶数次,求最长长度。\(T\)组询问,\(\displaystyle\sum_{}|S|\leq5\times10^6\)。注:本题暂时只需要通过\(\text{Subtask4}......
  • UOJ91 最大异或和
    最大异或和把区间进行前缀异或相当于差分,我们知道线性基异或后仍是线性基,那么我们在差分后的数列上进行操作。不难发现修改后需要对线性基进行删除,在线的方法看zxy博客吧。注意差分数列(线性基)和原数列是分开处理的,我们对原数列的修改目的是修改线性基,而线性基的维护用上......
  • 位运算(位于、位或、异或、按位取反、位左移、位右移)及相应示例
    一、位运算符运算符含义a&b位与aba^b异或~a按位取反a<<b位左移a>>b位右移二、运算符说明:把他们转化为二进制从低到高按位运算位与(&):当两位都为1时,结果为1,否则为0,在将得出的结果转化为十进制,得出位于的结果位或(|)当且仅当两位都为0时,结果为0,否则为1,在将得出的结果转化为十......
  • acwing 4645. 选数异或
     输出yesnoyes no题意分析,给一串数组,再在每次提问时给出一个区间,l,r;求l,r区间内是否存在两个数,两数异或后值为给出的x;已知a^b=x-->a^x=b;思路:1,把每个数异或x,存在另一个数组(b)里,暴力搜索,看区间内b数组内数字是否有等于a数组内数字,TLE2.记录下标,比较每个......