I've written a program to check if my thought about solution on paper is right (and it is).
The task: how many zeros is in the back of multiplication of all numbers from 10 to 200.
It is 48 and it is a simple to calculate manually.
I never write on python seriously and this is what I get:
mul = 1
for i in range(10, 200 + 1):
mul *= i
string = str(mul)
string = string[::-1]
count = 0;
for c in str(string):
if c == '0':
count += 1
else:
break
print count
print mul
I bet it is possible to write the same more elegant in such language like a python.
ps: yes, it is a homework, but not mine - i just helped a guy ;-)
A straight-forward implementation that doesn't involve calculating the factorial (so that it works with big numbers, ie 2000000!) (edited):
fives = 0
twos = 0
for i in range(10, 201):
while i % 5 == 0:
fives = fives + 1
i /= 5
while i % 2 == 0:
twos = twos + 1
i /= 2
print(min(fives, twos))
import math
answer = str(math.factorial(200) / math.factorial(9))
count = len(answer) - len(answer.rstrip('0'))
print sum(1 + (not i%25) + (not i%125) for i in xrange(10,201,5))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With