fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #ifndef M
  4. #define M 1000000007
  5. #endif
  6. typedef pair<int,int>pp;
  7. typedef std::vector<pp> vpp;
  8. typedef long long ll;
  9. typedef long double ld;
  10. #ifndef pb
  11. #define pb push_back
  12. #endif
  13. int min(int x,int y){return(x<y)?x:y;}
  14. int max(int x,int y){return(x>y)?x:y;}
  15. int main(int argc, char const *argv[])
  16. {
  17. ll t,x,y;
  18. scanf("%lld",&t);
  19. while(t--)
  20. {
  21. scanf("%lld %lld",&x,&y);
  22. if(x>y)
  23. {
  24. ll f=x;
  25. x=y;
  26. y=f;
  27. }
  28. ll h1=log2l(x);
  29. ll h2=log2l(y);
  30. ll dis=0;
  31. while(h2>h1)
  32. {
  33. dis++;
  34. y>>=1;
  35. h2--;
  36. }
  37. while(x!=y)
  38. {
  39. dis+=2;
  40. y>>=1;
  41. x>>=1;
  42. }
  43. printf("%lld\n",dis+1 );
  44. }
  45. return 0;
  46. }
Success #stdin #stdout 0s 3416KB
stdin
3
2 3
2 7
5 15
stdout
3
4
6