Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình tìm số m sao cho nó có n số 0 ở cuối bằng Python

Giả sử chúng ta có một số n. Ta phải tìm số m nhỏ nhất sao cho giai thừa của m có ít nhất n số 0.

Vì vậy, nếu đầu vào là n =2, thì đầu ra sẽ là 10 vì 10! =3628800 và 9! =362880, số tối thiểu có 2 số không là 10.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • Xác định một hàm count_fives (). Điều này sẽ mất n
  • cnt:=0
  • while n> 0, do
    • n:=tầng của (n / 5)
    • cnt:=cnt + n
  • trả về cnt
  • Từ phương pháp chính, hãy thực hiện như sau -
  • trái:=1
  • đúng:=5 ^ 24
  • trong khi phải - trái> 5, thực hiện
    • giữa:=tầng của ((phải + trái) / 10) * 5
    • fives:=count_fives (giữa)
    • nếu fives giống với n, thì
      • right:=mid
      • left:=right - 5
      • ra khỏi vòng lặp
    • ngược lại khi fives
    • left:=mid
  • nếu không,
    • right:=mid
  • trả lại bên phải
  • Ví dụ

    Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

    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))

    Đầu vào

    2
    

    Đầu ra

    10