# Help me in solving COOKMACH problem

### My code

``````#include <iostream>
using namespace std;

int main() {
// your code goes here
int t,a,b;
cin>>t;
while(t--){
cin>>a>>b;

}
return 0;
}

``````

Problem Link: CodeChef: Practical coding for everyone

@deepakjdh31
The logic is first make a as power of 2 by dividing it by 2 when it become power of two then make a as b either by dividing by 2 or multiplying it by 2 depending upon b.
In this way u can count the minimum number of steps

You just neet to verify if `a` is a power of 2. In that case, you need to now how far this power of 2 is from b, which is already a power of 2. (ex: 2 and 8, 2=2^1 and 8=2^3, so in this case 2 is far from 8 by 2 powers of 2).

But, if `a` is not a power of two, yo need to convert it to the nearest power of 2 and count the number of steps. ex: if `a=5`, by doing the first operation (only one operation) `a=(a-1)/2` then `a=2` (the only way to do this is by dividing, never multiply by 2). So when `a` gets a power of 2, then do what I explained above.

This will be helpful: `lsb(a) = (a & -a)`. Here, lsb() is the least significant byte (you can search about it later). So if you have a power of two, the lsb() of this number is the same number. In other words, to check if `a` is a power of 2, just make `if ( a == (a & -a) )`, and this will make all the work.

Good luck!!!