Codechef python运行时错误

时间:2010-10-02 18:18:16

标签: python

我总是在codechef上使用python提交运行时错误。请有人帮忙。 试着回答其他问题..同样的错误 在我的comp上运行正常!(我在我的comp上使用python 2.6.5。用python 2.5检查答案) 这是一个简单的问题,我得到运行时错误 http://www.codechef.com/problems/FCTRL/

我的代码

import sys
def factorial_zeros(f):
    i=0
    j=0
    for x in range (1,f+1):
        if x%10 == 0:
            while x%10 == 0:
                x= x//10
                i +=1
            while x%5 == 0:
                x= x//5
                j +=1
        elif x%5 == 0:
            while x%5 == 0:
                x= x//5
                j +=1
    l = i+j
    return l


l=[]
i=int(raw_input())
for x in range(i):
    f = int(raw_input())
    f= factorial_zeros(f)
    if x == i-1:
        sys.stdout.write(str(f))
    else:
        print f

2 个答案:

答案 0 :(得分:2)

我不在Codechef竞争/提交,但AFAIK它使用Python 2.5而不是2.6。也许你正在使用2.5特定的东西? (虽然我找不到任何东西)。

编辑:

现在我认为问题不在于Python版本。请注意问题陈述中输入值N可以大到10 ^ 9。尝试具有如此大的f值的range(1,f+1)将导致解释器尝试构建具有10 ^ 9个元素的list。这将明显超出判断机器上此问题的内存限制,从而导致未被捕获的异常显示为RTE。

FWIW,您解决问题的方法是错误的。即使您使用range替换xrange以避免内存限制,您仍然会尝试10 ^ 9次迭代,这将使您的解决方案超时。

答案 1 :(得分:1)

事情在2.6和2.5下运行正常,而2.4就此而言。 i, j = 0, 0很好,因为很古老的Python版本,比如1.5。 程序甚至可以读取输入并正确计算结果。虽然我尝试sys.stdin.readline().strip()而不是raw_input()

除非您指定了哪个RuntimeError,否则最好使用stacktrace,几乎没有人可以帮助您,所有心灵感应都在度假。