蚂蚁的难题系列--(一)
2014-10-11 19:44
120 查看
蚂蚁的难题(一)
位运算计算,链接:http://acm.nyist.net/JudgeOnline/problem.php?pid=744时间限制:1000 ms | 内存限制:65535 KB
难度:2
描述
小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇。不过他最近遇到了一个难题:
给定一个区间[a,b],在区间里寻找两个数x和y,使得x异或y最大。来,帮帮他吧!
输入有多组测试数据(以EOF结尾)。
每组数据输入两个数a,b.(0<=a<b<2^63)输出输出a到b之间,异或最大的值。样例输入
1 2 8 9
样例输出
3 1
题解:这是一道简单的数学题。
任取两组数即可,如4,8。计算得这个区间异或最大值为7^8=15=(1111)2=2^4-1;
再任意找一组数2,6,计算得这个区间异或最大值为2^5=7=(111)2=2^3-1;
通过上述分析可得知最大值为2^n-1,而n正是右边界的数的二进制位数。
#include<cstdio> #include<cmath> #include<ctime> #include<queue> #include<stack> #include<cstring> #include<cstdlib> #include<iostream> #include<algorithm> using namespace std; #define max(a,b) a>b?a:b #define min(a,b) a>b?b:a #define mem(a,b) memset(a,b,sizeof(a)) int dir[4][2]= {{0,1},{0,-1},{1,0},{-1,0}}; int main() { long long nn,mm,XOR,result; while(~scanf("%lld%lld",&nn,&mm)) { XOR=nn^mm; for(result=1; result<=XOR; result<<=1); printf("%lld\n",result-1); } return 0; }
相关文章推荐
- 蚂蚁的难题系列--二
- S - 不容易系列之(3)—— LELE的RPG难题
- 南阳理工OJ_题目745 蚂蚁的难题(二)&&题目983 首尾相连数组的最大子数组和
- 杭电OJ_(2045)不容易系列之(3)—— LELE的RPG难题
- hdu 2045 不容易系列之(3)—— LELE的RPG难题 (递推)
- 2045 不容易系列之(3)—— LELE的RPG难题
- *寒假水9——不容易系列之(3)—— LELE的RPG难题
- nyoj 744 蚂蚁的难题(一) (找规律,位运算,数论)
- HDU 2045 不容易系列之(3)—— LELE的RPG难题 递推
- HDOJ 2045:不容易系列之(3)—— LELE的RPG难题
- hdu 2045 不容易系列之(3)—— LELE的RPG难题
- hdu 2045 不容易系列之(3)—— LELE的RPG难题
- 递推—杭电2045 不容易系列之(3)—— LELE的RPG难题
- 蚂蚁的难题(X)
- HDOJ2045不容易系列之(3)—— LELE的RPG难题
- 蚂蚁的难题(三)
- [原]hdu2045 不容易系列三——LELE的RPG难题 (递推方程)
- NYOJ-744蚂蚁的难题(一)
- Nyoj 745 蚂蚁的难题(二)
- 【计蒜客系列】挑战难题18:跳跃游戏