CodeForces 276D Little Girl and Maximum XOR :L到R内找出两个数,使他们亦或和最大:找规律

像我这种一遇到这种类型题目必然先打个表==

然后发现其实就是找到L和R二进制由高到底第一位不同的数,低位全部变成1,想想也好明白==

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<algorithm>
 4 using namespace std;
 5 int main()
 6 {
 7   long long i,j,er,ans,a,b;
 8   scanf("%I64d%I64d",&a,&b);
 9   a^=b; j=-1;
10   for (i=0;i<=63;i++)
11     if (a&(1ll<<i)) j=i;
12   er=1; ans=0;
13   for (i=0;i<=j;i++)
14     ans+=er,er*=2;
15   printf("%I64d\n",ans);
16   return 0;
17 }

题目链接:http://codeforces.com/problemset/problem/276/D

posted on 2015-03-27 15:55  xiao_xin  阅读(224)  评论(0编辑  收藏  举报

导航