ধরুন আমাদের একটি সংখ্যা 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