進階班例題

整數轉換步數

時間限制 1000 ms · 記憶體限制 256 MB · C++

給定兩個整數 $A$ 與 $B$,你可以對 $A$ 執行以下任一操作:

  • 將目前數值加一($x \to x + 1$)
  • 將目前數值減一($x \to x - 1$)
  • 將目前數值乘二($x \to 2x$)

請問最少需要幾步,才能從 $A$ 變成 $B$?

保證 $0 \leq A, B \leq 10^5$。

輸入說明

  • 輸入一行,包含兩個整數 $A, B$。
  • $0 \leq A, B \leq 10^5$

輸出說明

輸出最少需要幾步。

範例

範例輸入 1

2 5

範例輸出 1

2

範例輸入 2

4 6

範例輸出 2

2

範例輸入 3

10 1

範例輸出 3

9
C++77 / 50,000

「跑範例測資」只跑題目敘述上的範例,會顯示你的輸出與正確答案的對照; 「提交評測」會跑完整的測資並給實際結果,但不會顯示測資內容。兩者都不需要帳號,也不會留下成績紀錄。