我們來玩一種數值遊戲,給定N的初始值為0,我們要使N等於一個整數S。只允許三種運算方式:
- INC:將N加1。
- DEC:將N減1。
- DBL:將N乘2。
經過一連串運算之後使得N = S,我們要求運算次數最少,例如當S=7,最少需要作5次運算:
- INC: N = 0 + 1 = 1
- INC: N = 1 + 1 = 2
- DBL: N = 2 x 2 = 4
- DBL: N = 2 x 4 = 8
- DEC: N = 8 - 1 = 7 <--完成!
Input
輸入不會超過200列,每列有一個整數S(0 <= S <= 2^31),並以EOF表示資料結束。
Output
請對每個S,輸出使N=0變為N=S的最少運算數。請你不必考慮運算過程中的溢位問題。
Sample Input
0
1
2
3
10
100
2147483647
2147483648
Sample Output
0
1
2
3
5
9
33
32
原文出處
沒有留言:
張貼留言