题目:
n从1开始,每个操作可以选择对n加1或者对n加倍。若想获得整数2014,最少需要多少个操作?
解法:
2013的二进制是 11111011110(9个1,2个0),则可以将原问题转换为:将此数按原来题目的要求右移,直到值为1,怎么做呢?如果末尾是1,则需要两次操作,先减去1然后右移一位,如果是0。则直接右移。所以,总次数为2*8(1)+2(0)共18个操作;
题目:
n从1开始,每个操作可以选择对n加1或者对n加倍。若想获得整数2014,最少需要多少个操作?
解法:
2013的二进制是 11111011110(9个1,2个0),则可以将原问题转换为:将此数按原来题目的要求右移,直到值为1,怎么做呢?如果末尾是1,则需要两次操作,先减去1然后右移一位,如果是0。则直接右移。所以,总次数为2*8(1)+2(0)共18个操作;