मान लीजिए कि हमारे पास एक संख्या 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