NZEC参与了各种事实

时间:2012-03-01 07:13:00

标签: python

我试图解决这个问题http://www.spoj.pl/problems/FACKT/,并且我一直在获得非零退出代码(NZEC)。我究竟如何确定代码中要更改的内容以克服这个问题?

这是代码

import math
import sys
def cal_num(n):

    i = 1
    f = 1
    while f<n:
        f *= i
        i = i + 1
    return i-1


while 1:
    line = sys.stdin.readline()
    if line == "":
        break
    n = int(line)
    x = cal_num(n)
    y = math.factorial(2*x)
    l = int(math.ceil(math.log(y,10)))
    print (x,l)

欢迎任何建议。

2 个答案:

答案 0 :(得分:0)

返回的行将具有换行符,不会为空或无。 试试这个:

if line == "\n":
    break

答案 1 :(得分:0)

在这个问题中,您必须阅读一个数字作为输入。我没有看到任何理由进行while循环。

import math
import sys
def cal_num(n):

    i = 1
    f = 1
    while f<n:
        f *= i
        i = i + 1
    return i-1

def main():    # Replace while with a function.
    line = sys.stdin.readline()
    if line == "":
        return    # Replace break with return
    n = int(line)
    x = cal_num(n)
    y = math.factorial(2*x)
    l = int(math.ceil(math.log(y,10)))
    print x,l

main()