두 개의 값 시작과 끝이 있다고 가정하고 시작에서 끝으로 변환하는 데 필요한 최소 작업 수를 다음 작업을 사용하여 찾아야 합니다.
-
1 감소
-
2를 곱합니다.
따라서 입력이 start =2, end =7과 같으면 출력은 3이 됩니다. 2를 곱하여 4를 얻은 다음 2를 곱하여 8을 얻은 다음 1을 빼서 7을 얻을 수 있기 때문입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
답변 :=0
-
다음을 무한히 수행하십시오.
-
종료 <=시작이면
-
반환 + 시작 - 끝
-
-
그렇지 않으면 끝이 홀수이면
-
끝 :=끝 + 1, ans :=ans + 1
-
-
그렇지 않으면
-
end :=끝의 몫 / 2
-
ans :=ans + 1
-
-
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
예시
class Solution: def solve(self, start, end): ans = 0 while True: if end <= start: return ans + start - end elif end % 2: end += 1 ans += 1 else: end //= 2 ans += 1 ob1 = Solution() start = 2 end = 7 print(ob1.solve(start, end))
입력
2, 7
출력
3