สมมติว่าเรามีเครื่องคิดเลขที่เสียซึ่งมีตัวเลขแสดงอยู่บนจอแสดงผล เราสามารถดำเนินการได้เพียงสองครั้งเท่านั้น -
-
Double − สิ่งนี้จะคูณตัวเลขบนหน้าจอด้วย 2 หรือ;
-
การลดลง - สิ่งนี้จะลดจำนวนที่แสดงลง 1,
เริ่มแรก เครื่องคิดเลขกำลังแสดงตัวเลข X เราต้องหาจำนวนการดำเนินการขั้นต่ำที่จำเป็นในการแสดงตัวเลข Y
ดังนั้นหากอินพุตเป็นเหมือน X =5 และ Y คือ 8 เอาต์พุตจะเป็น 2 เมื่อลดลงเพียงครั้งเดียว แล้วเพิ่มเป็นสองเท่า
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
res :=0
-
ในขณะที่ Y> X
-
res :=res + Y mod 2 + 1
-
Y :=Y / 2 เมื่อ Y เป็นเลขคู่ มิฉะนั้น (Y + 1) / 2
-
-
return res + X - Y
ตัวอย่าง(Python)
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
class Solution(object): def brokenCalc(self, X, Y): res = 0 while Y > X: res += Y % 2 + 1 Y = Y // 2 if Y % 2 == 0 else (Y + 1)//2 return res + X - Y ob = Solution() print(ob.brokenCalc(5,8))
อินพุต
5 8
ผลลัพธ์
2