Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 超出spoj.FCTRL的时间限制_Python_Python 2.7_Optimization - Fatal编程技术网

Python 超出spoj.FCTRL的时间限制

Python 超出spoj.FCTRL的时间限制,python,python-2.7,optimization,Python,Python 2.7,Optimization,我必须在整数的阶乘末尾生成尾随零的数量。第一个输入是测试用例“T”的编号。接下来的T行包含输入整数。输出应该在输入整数的阶乘末尾有零的数目。这是我的代码,但超出了时间限制。请帮我优化 T=int(raw_input()) a=[] for i in range(0,T): a.append(int(raw_input())) def factorial (n): fact=1 while(n>0): fact=fact*n n=n-

我必须在整数的阶乘末尾生成尾随零的数量。第一个输入是测试用例“T”的编号。接下来的T行包含输入整数。输出应该在输入整数的阶乘末尾有零的数目。这是我的代码,但超出了时间限制。请帮我优化

T=int(raw_input())
a=[]
for i in range(0,T):

    a.append(int(raw_input()))
def factorial (n):
    fact=1
    while(n>0):
        fact=fact*n
        n=n-1
    return fact

b=[]
for i in range(0,T):
    b.append(factorial(a[i]))


c=[]

for i in range(0,T):
    ans=0
    while(b[i]%10 == 0):
        ans=ans+1
        b[i]=b[i]/10
    c.append(ans)
for i in range(T):
    print c[i],

由于输入numbers相当大,因此无法计算它们的阶乘。时间太长了。考虑一下计算尾随0数而不计算阶乘的算法。 事实上,每个尾随的0在5乘以一些偶数之后出现。因此,你需要计算所有数字中的5个因子,以降低输入

例如27!以6零结束,因为在范围(1,27)中,5因子只有这些数值

5(1)10(1)15(1)20(1)25(2)。25有两个5的因子