首页 > 代码库 > 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
Technorati Tags: Python,SPOJ
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。