The problem is that these assignments are evaluated automatically. So i can not use description strings to clearify output or input etc.
Basically it's like this:
a = the number of times i'm going to read input to evaluate
lst = the factors of 5. I.e. (5, 5^2, 5^3, 5^4.... etc) until the last one wich is smaller then 1000000000
For those that didn't know the number of trailing zero's in a factorial is decided by the numer of factors of 5, because only a 5 can create a 0. Remember a factorial (n) = n*....*4*3*2*1. The list does not represent factorials.
Example input of this program:
5 #number of times i'm going to read in a number
3 # 3! = 6, no trailing 0's zo the output would be 0
5 # 5! = 120, 1 trailing 0's so the output would be 1
50! #50!= <very big number>, 12 trailing 0's (50/5 + 50/25=12)
100! #100!= <very big number>, 24 trailing 0's (100/5 + 100/25 = 24)
125! #125!= <very big number>, 31 trailing 0's (125/5 + 125/25 +125/125 = 31)
Output would be:
0
1
12
24
31
Hope this clarifies what i'm trying to achieve here...
Ciao - Geofram
On 10/8/06, Alan Gauld <[EMAIL PROTECTED]> wrote:
Hi,
Maybe its just me but I didn't understand what you are
trying to do...
> The problem is to compute the number of trailing zero's in
> factorials (n! =
> 1*2*3*4*.......*n). with n <= 1000000000
>
> My solution is as follows (a = times to read a number (b) to
> process) :
>
> ---------------------------------------------------------------------------
>
> a = input()
what does a represent? Its usually worth putting a prompt string into
input() - and raw_input() - just as documentation if nothing else!
And maybe a descriptive variable name if appropriate.
> for i in range(a):
> lst = (5, 25, 125, 625, 3125, 15625, 78125, 390625, 1953125,
> 9765625,
> 48828125, 244140625)
None of these have any trailing zeros so far as I can tell?
What answer are you expecting from this function?
> ans = 0
> b = input()
similarly, what is b supposed to be?
> for i in lst:
And here you are throwing away the i from the outer loop
> if i <= b:
> ans += b//i
And now you divide some arbitrary input value by each factorial
in turn and sum the results?
> print ans
> Please, if you have suggestions to improve the speed of this
> algorithm give
> an argumentation as to why a certain something is faster.
I nbeed to understand what you are tryying to do first, its
not making much sense at the moment. (But it is after midnight! :-)
> P.s. I know python is probably not the best language for these kinds
> of
> problems (I can code it in C or C++), it just bugs me that it's
> possible
> and my solution is failing... ;-)
Actually it looks like exactly what I would use Python for rarther
than C/C++. The speed issue can be solved in numerous ways but
as always lets be sure we get the functionality clear before starting
to optimise things.
Alan G.
_______________________________________________
Tutor maillist - Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor
_______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor