ধরুন আমাদের একটি সংখ্যা n আছে। আমাদের সবচেয়ে ছোট সংখ্যা m খুঁজে বের করতে হবে, যেমন m এর ফ্যাক্টোরিয়ালের অন্তত n সংখ্যা 0s।
সুতরাং, যদি ইনপুট n =2 এর মত হয়, তাহলে আউটপুট 10 হবে কারণ 10! =3628800 এবং 9! =362880, 2 শূন্য সহ সর্বনিম্ন সংখ্যা হল 10৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন count_fives()। এটি n লাগবে
- cnt :=0
- যখন n> 0, do
- n :=(n / 5) এর ফ্লোর
- cnt :=cnt + n
- cnt ফেরত
- প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন -
- বামে :=1
- ডান:=5^24
- যখন ডান - বাম> 5, ডু
- মাঝে :=ফ্লোর (ডান + বাম) / 10) * 5
- পাঁচ :=count_fives(মিড)
- যদি Fives n এর মত হয়, তাহলে
- ডান :=মধ্য
- বামে :=ডান - 5
- লুপ থেকে বেরিয়ে আসুন
- অন্যথায় যখন Fives
- বামে :=মধ্য
- অন্যথায়,
- ডান :=মধ্য
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
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