মান লেট n একটি সংখ্যা। আমাদের সবচেয়ে ছোট সংখ্যা m খুঁজে বের করতে হবে যাতে m-এর ফ্যাক্টোরিয়ালে কমপক্ষে n সংখ্যক ০ থাকে শেষে।
তাহলে, যদি ইনপুট হয় n = 2, তবে আউটপুট হবে 10 কারণ 10! = 3628800 এবং 9! = 362880, ২টি ০ সহ সর্বনিম্ন সংখ্যা 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