숫자 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