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:

6
3
60
100
1024
23456
8735373
第一行是底下输入的行数,后边就是要阶乘求结尾0个数的数。
# Filename: SPOJ11 Factorial
import sys


t = 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

SPOJ Python Day1: Factorial,布布扣,bubuko.com

SPOJ Python Day1: Factorial

上一篇:Java抓取网页数据(原网页+Javascript返回数据)


下一篇:java学习资料