Advertisement
GeeckoDev

codility 11/05/2012

May 11th, 2012
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.69 KB | None | 0 0
  1. #include <algorithm>
  2.  
  3. vector<int> hit_the_number ( int A ) {
  4.     vector<int> v;
  5.     v.push_back(A);
  6.  
  7.     while (A > 1)
  8.     {
  9.         if (A % 2) // Odd number
  10.         {
  11.             A >>= 1;
  12.             v.push_back(A+1);
  13.             v.push_back(A);
  14.         }
  15.         else if (!(A & (A-1))) // Power of two
  16.         {
  17.             break;
  18.         }
  19.         else // Even number
  20.         {
  21.             A >>= 1;
  22.             v.push_back(A);
  23.         }
  24.     }
  25.  
  26.     // Here A is always a power of two.
  27.  
  28.  
  29.     for (;;)
  30.     {
  31.         A >>= 1;
  32.        
  33.         if (!A)
  34.           break;
  35.      
  36.         v.push_back(A);
  37.     }
  38.  
  39.     reverse(v.begin(), v.end());
  40.     return v;
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement