fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4.  
  5. ll bits(ll n)
  6. {
  7. ll cnt = 0;
  8. while(n > 0)
  9. {
  10. cnt++;
  11. n /= 2;
  12. }
  13. return cnt;
  14. }
  15.  
  16. ll setBits(ll n)
  17. {
  18. ll cnt = 0;
  19. while(n > 0)
  20. {
  21. cnt++;
  22. n = n&(n-1);
  23. }
  24. return cnt;
  25. }
  26.  
  27. ll Maximum_Number(ll a, ll b)
  28. {
  29. ll sa = setBits(a);
  30. ll sb = setBits(b);
  31. ll ba = bits(a);
  32. ll bb = bits(b);
  33. ll ansbits = max(ba, bb);
  34. if(sa + sb >= ansbits)
  35. {
  36. ll ans = 0;
  37. ll x = 1;
  38. while(ansbits--)
  39. {
  40. ans += x;
  41. x *= 2;
  42. }
  43. return ans;
  44. }
  45. ll x1 = 1, x2 = 1;
  46. ll ans = 0;
  47. for(int i=1; i<ba; i++) x1 *= 2;
  48. for(int i=1; i<bb; i++) x2 *= 2;
  49. while(sa--)
  50. {
  51. ans += x1;
  52. x1 /= 2;
  53. }
  54. while(sb--)
  55. {
  56. ans += x2;
  57. x2 /= 2;
  58. }
  59. return ans;
  60. }
  61.  
  62. int main() {
  63. int t, a, b;
  64. cin>>t;
  65. while(t--)
  66. {
  67. cin>>a>>b;
  68. cout<<Maximum_Number(a, b)<<"\n";
  69. }
  70. return 0;
  71. }
Success #stdin #stdout 0.01s 5360KB
stdin
3
12 6
8 1
101 151
stdout
15
9
255