首页 > 蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744

蚂蚁的难题(一) http://acm.nyist.net/JudgeOnline/status.php?pid=744

 

蚂蚁的难题(一)

时间限制:1000 ms  |  内存限制:65535 KB
难度:2
描述

小蚂蚁童鞋最近迷上了位运算,他感觉位运算非常神奇。不过他最近遇到了一个难题:

给定一个区间[a,b],在区间里寻找两个数x和y,使得x异或y最大。来,帮帮他吧!

输入
有多组测试数据(以EOF结尾)。

每组数据输入两个数a,b.(0<=a输出
输出a到b之间,异或最大的值。
样例输入
1 2
8 9
样例输出
3
1
来源
蚂蚁系列
上传者
菜鸟咋了

   这是一道简单的数学题。 

 

   求区间[a, b] 之间的 异或 最大, 推几组数据,我们可以发现 

   结果都是 2^n - 1;     

   那么关键问题就是 求 n 的大小。 

   我们发现 n 的大小 与 a^b 有关。

#include   
int main()  
{  long long a;long long b;  while(scanf("%lld %lld",&a,&b)!=EOF) {   int count = 0;long long cj=1,x;x = a ^ b;  while(x)  {count++;x =x/2;  }while(count){cj*=2;count--;}printf("%lld
",cj-1);  }  return 0;  
} 

 

转载于:https://www.cnblogs.com/wangyouxuan/p/3272128.html

更多相关:

  • Gym - 102082Ghttps://vjudge.net/problem/2198225/origin对于数列中任意一个数,要么从最左边到它不递减,要么从最右边到到它不递减,为了满足这个条件,就要移动,而移动的最少步数就是逆序对数。所以这个数要么往左移动,要么往右移动,所以两个取最小就好了 #include

  • 雪花算法根据时间戳生成有序的 64 bit 的 Long 类型的唯一 ID 各 bit 含义: 1 bit: 符号位,0 是正数 1 是负数, ID 为正数,所以恒取 041 bit: 时间差,我们可以选择一个参考点,用它来计算与当前时间的时间差 (毫秒数),41 bit 存储时间差,足够使用 69 年10 bit: 机器码,能编...

  •   这是一篇很水的blog 扫雷 link 一道很水的dp,考虑上一上,这一行,与下一行是否有雷即可 #include #include #include #include using namespace std; inline long long read...

  • 题目链接:http://codeforces.com/problemset/problem/900/D 题意:   给定x,y,问你有多少个数列a满足gcd(a[i]) = x 且 ∑(a[i]) = y。   题解:   由于gcd(a[i]) = x,所以y一定是x的倍数,否则无解。   那么原题就等价于:问你有多少个数列a满足g...

  • P2429 制杖题 题目描述 求不大于 m 的、 质因数集与给定质数集有交集的自然数之和。 输入输出格式 输入格式:第一行二个整数 n,m。 第二行 n 个整数,表示质数集内的元素 p[i]。 输出格式:一个整数,表示答案,对 376544743 取模。 输入输出样例 输入样例#1:2 15 3 5 输出样例#1:60 说...