牛娃最近发现了一台破旧的电脑。这台电脑只有一个寄存器,所以只能在其中输入一个整数值。然后在一次操作中,最多可以将其按位向左或向右移动三个位置(即对应二进制的左移或右移操作)。如果右移导致二进制的1被舍弃,则禁止右移。所以,事实上,在一次运算中,你可以将你的数字乘以或除以2,4或8,并且只有当这个数字可以被所选的除数整除时,才允许除法。
在形式上,如果寄存器包含正整数x,则在一次操作中,它可以替换为以下之一:
1、x*2
2、x*4
3、x*8
4、x/2,如果x可以被2整除
5、x/4,如果x可以被4整除
6、x/8,如果x可以被8整除
例如,如果x=6,在一次操作中,它可以被12、24、48或3所取代。值6不能被4或8整除,所以只有四种替换形式。
现在牛娃想知道,如果他把a放入寄存器并想在最后得到b,他需要执行最少多少步操作。