Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 하나의 숫자를 다른 숫자로 만드는 데 필요한 최소 연산 수를 찾는 프로그램

<시간/>

숫자 시작과 다른 숫자 끝(start

  • 1씩 증가
  • 2 곱하기

따라서 입력이 start =5, end =11과 같으면 출력은 2가 됩니다. 2를 곱하여 10을 얻은 다음 1을 더하여 11을 얻을 수 있기 때문입니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • ct:=0
  • while end/2>=시작, 수행
    • end mod 2가 1과 같으면
      • 끝 :=끝 - 1
      • 끝 :=끝/2
      • ct :=ct + 2
    • 그렇지 않으면
      • 끝:=끝/2
      • ct :=ct + 1
  • ct :=ct +(끝-시작)
  • 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