Codeforces 276D. Little Girl and Maximum XOR(模拟)
来源:互联网 发布:安庆网络问政平台新版 编辑:程序博客网 时间:2024/05/24 07:27
A little girl loves problems on bitwise operations very much. Here's one of them.
You are given two integers l and r. Let's consider the values of for all pairs of integers a and b (l ≤ a ≤ b ≤ r). Your task is to find the maximum value among all considered ones.
Expression means applying bitwise excluding or operation to integers x and y. The given operation exists in all modern programming languages, for example, in languages C++ and Java it is represented as "^", in Pascal — as «xor».
The single line contains space-separated integers l and r (1 ≤ l ≤ r ≤ 1018).
Please, do not use the %lld specifier to read or write 64-bit integers in С++. It is preferred to use the cin, cout streams or the %I64d specifier.
In a single line print a single integer — the maximum value of for all pairs of integers a, b (l ≤ a ≤ b ≤ r).
1 2
3
8 16
31
1 1
0
题解:
看起来很难其实想清楚了就很水的一题,就是求数组x,y之间的数异或的最大值
思路:
最后找规律可以发现只要把x,y都转化为二进制,从高位往低位找到第一个“1 0”(顺序不能反)情况,记录下位置,然后输出pow(2,tag+1)-1就行了
原理是可以把该位后面的数字改成每一位是0 1或者1 0,也就是异或一定为1,
代码:
#include<iostream>#include<cstring>#include<stdio.h>#include<math.h>#include<string>#include<stdio.h>#include<queue>#include<stack>#include<map>#include<vector>#include<deque>#include<algorithm>#define ll long long#define INF 1008611111#define M (t[k].l+t[k].r)/2#define lson k*2#define rson k*2+1using namespace std;int main(){ int a[105],b[105],c[105],len1=0,len2=0; memset(a,0,sizeof(a)); memset(b,0,sizeof(b)); ll l,r,i,j; scanf("%lld%lld",&l,&r); if(l==r) { printf("0\n"); return 0; } while(l!=0) { a[len1]=l%2; l/=2; len1++; } while(r!=0) { b[len2]=r%2; r/=2; len2++; } int tag=0; for(i=max(len1,len2)-1;i>=0;i--) { if(b[i]==1&&a[i]==0) { tag=i; break; } } printf("%lld\n",(ll)pow(2,tag+1)-1); return 0;}
- Codeforces 276D. Little Girl and Maximum XOR(模拟)
- Codeforces 276D. Little Girl and Maximum XOR
- Codeforces 276D Little Girl and Maximum XOR (贪心)
- Codeforces 276D Little Girl and Maximum XOR 贪心+构造
- Codeforces 276D Little Girl and Maximum XOR【贪心】
- [CodeForces 276D] Little Girl and Maximum XOR (构造+脑洞)
- CodeForces 276 D.Little Girl and Maximum XOR(位运算)
- codeforces 276D D. Little Girl and Maximum XOR(贪心+dp+数论)
- D. Little Girl and Maximum XOR(贪心)
- codeforces 276D Little Girl and Maximum XOR(区间最大异或值--技巧)【模板】
- CodeForces 276C Little Girl and Maximum Sum
- Codeforces 276C Little Girl and Maximum Sum
- codeforces 276 C. Little Girl and Maximum Sum
- Codeforces 276C Little Girl and Maximum Sum【贪心】
- 【Codeforces Round 169 (Div 2) D】【简单数位贪心】Little Girl and Maximum XOR 区间选两数使得异或值尽可能大
- CodeForces - 276C Little Girl and Maximum Sum (扫描线)
- Codeforces 246C Little Girl And Maximum 差分
- Little Girl and Maximum Sum
- Hololens官方教程精简版
- [Python]使用TuShare能获取到哪些信息?
- item02.xml
- 内存的战争
- PullToRefresh刷新的相关代码结合无限轮播
- Codeforces 276D. Little Girl and Maximum XOR(模拟)
- linux报"xxx is not in the sudoers file.This incident will be reported"错误
- python通过定制路径的方式解析接口返回数据
- 5.轨迹抽象,关键点序列生成
- 【bzoj4403】【序列统计】不降转升+组合数添项合并
- EL表达式截取字符串
- leetcode006-Search for a Range
- 51nod 1092 回文字符串 【巧用 dp】
- 初入Linux