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

파이썬에서 끝에 0이 n개 있도록 숫자 m을 찾는 프로그램

<시간/>

숫자 n이 있다고 가정합니다. m의 계승이 최소 n개의 0을 갖도록 최소 수 m을 찾아야 합니다.

따라서 입력이 n =2와 같으면 출력은 10이므로 10이 됩니다! =3628800과 9! =362880, 0이 2개인 최소 수는 10입니다.

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

  • count_fives() 함수를 정의합니다. n
  • 소요됩니다.
  • cnt :=0
  • n> 0일 때 수행
    • n :=(n / 5)의 바닥
    • cnt :=cnt + n
  • 반환 cnt
  • 메인 방법에서 다음을 수행하십시오. -
  • 왼쪽 :=1
  • 맞음 :=5^24
  • 오른쪽 - 왼쪽> 5 동안 do
    • 중간 :=((오른쪽 + 왼쪽) / 10) * 5의 바닥
    • 5:=count_fives(중간)
    • 5가 n과 같으면
      • 오른쪽 :=중간
      • 왼쪽 :=오른쪽 - 5
      • 루프에서 나오다
    • 그렇지 않으면 5가
    • 왼쪽 :=중간
  • 그렇지 않으면
    • 오른쪽 :=중간
  • 우회전
  • 예시

    이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

    def count_fives(n):
       cnt = 0
       while n > 0:
          n = n // 5
          cnt += n
       return cnt
    
    def solve(n):
       left = 1
       right = 5**24
       while right - left > 5:
          mid = int((right + left) / 10) * 5
          fives = count_fives(mid)
          if fives == n:
             right = mid
             left = right - 5
             break
          elif fives < n:
             left = mid
          else:
             right = mid
       return right
    
    n = 2
    print(solve(n))

    입력

    2
    

    출력

    10