Giả sử chúng ta có một số bắt đầu và một số kết thúc khác (start
- Tăng 1
- Nhân với 2
Vì vậy, nếu đầu vào là start =5, end =11, thì đầu ra sẽ là 2, vì chúng ta có thể nhân 2 để được 10, sau đó cộng 1 để được 11.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- ct:=0
- while end / 2> =start, do
- nếu kết thúc mod 2 giống với 1, thì
- end:=end - 1
- end:=end / 2
- ct:=ct + 2
- nếu không,
- end:=end / 2
- ct:=ct + 1
- nếu kết thúc mod 2 giống với 1, thì
- ct:=ct + (end-start)
- trả lại ct
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
Ví dụ
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))
Đầu vào
5,11
Đầu ra
2