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

然后发现其实就是找到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

相关文章:

  • 2021-07-24
  • 2022-01-31
  • 2022-12-23
  • 2021-06-21
  • 2021-10-23
  • 2022-12-23
  • 2021-12-14
  • 2021-05-15
猜你喜欢
  • 2021-10-15
  • 2022-12-23
  • 2022-12-23
  • 2021-10-07
  • 2022-03-03
  • 2021-07-25
  • 2021-08-25
相关资源
相似解决方案