Python程式:查詢將一個數字轉換為另一個數字所需的最小運算元
假設我們有一個數字start和另一個數字end(start < end),我們必須找到使用以下操作將start轉換為end所需的最小運算元:
- 加1
- 乘以2
因此,如果輸入類似於start = 5,end = 11,則輸出將為2,因為我們可以乘以2得到10,然後加1得到11。
為了解決這個問題,我們將遵循以下步驟:
- ct:= 0
- 當end/2 >= start時,執行
- 如果end模2等於1,則
- end := end - 1
- end := end/2
- ct := ct + 2
- 否則,
- end:= end/2
- ct := ct + 1
- 如果end模2等於1,則
- ct := ct +(end-start)
- 返回ct
讓我們檢視以下實現以更好地理解:
示例
class Solution: def solve(self, start, end): ct=0 while(end/2>=start): if end%2==1: end-=1 end=end/2 ct+=2 else: end=end/2 ct+=1 ct+=(end-start) return ct ob = Solution() print(ob.solve(5,11))
輸入
5,11
輸出
2
廣告