मान लीजिए हमारे पास एक संख्या n है। हमें सबसे छोटी संख्या m ढूंढनी है, जैसे कि m के फैक्टोरियल में कम से कम n संख्या में शून्य हों।
तो, यदि इनपुट n = 2 है, तो आउटपुट 10 होगा क्योंकि 10! = 3628800 और 9! = 362880, 2 शून्य वाली न्यूनतम संख्या 10 है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- count_fives() फ़ंक्शन परिभाषित करें। यह n लेगा
- cnt := 0
- जब n > 0, करें
- n := floor of (n / 5)
- cnt := cnt + n
- cnt वापस करें
- मुख्य मेथड से, निम्नलिखित करें:
- left := 1
- right := 5^24
- जब right - left > 5, करें
- mid := floor of ((right + left) / 10) * 5
- fives := count_fives(mid)
- यदि fives, n के समान है, तो
- right := mid
- left := right - 5
- लूप से बाहर आएं
- अन्यथा जब fives < n, तो
- left := mid
- अन्यथा,
- right := mid
- right वापस करें
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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