首页 > 代码库 > SPOJ Python Day1: Factorial

SPOJ Python Day1: Factorial

11. Factorial

这个题同样非常简单,就是求一个数的阶乘的尾部有多少个0.

思路是有2*5才会出0,然后2肯定比5多,所以就是数N!中有多少个因子5.

关于如何数出因子5的个数中http://www.chinaunix.net/old_jh/23/926848.html这篇文章介绍的非常详细。我就不谈了,不过想说写程序和算法是两个非常不同的工作,我现在的目标是,大概看一下前人的成法,主要完成编程工作。

最终推出的计算公式为:

当$0 < n < 5$时,$f(n!) = 0$;

当$ n > 5$ 时, $f(n!) = k + f(k!)$,其中$k = \frac{n}{5}$

EX:

$f(100!) = 20 + f(20!) = 20 + 4 + f(4!) = 24$

Sample Input:

63601001024234568735373
第一行是底下输入的行数,后边就是要阶乘求结尾0个数的数。
# Filename: SPOJ11 Factorialimport syst = int(sys.stdin.readline())for i in range (0, t):    n = int(sys.stdin.readline())    x = 0    while (n):        n = n/5        x = x + n    print x
Mission Success~
Technorati Tags: Python,SPOJ