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