2012-03-01 59 views
2

我试图解决这个问题http://www.spoj.pl/problems/FACKT/,并且我不断得到一个非零退出代码(NZEC)。我究竟如何确定要在代码中改变什么来克服这一点?NZEC in spoj FACKT

下面是代码

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) 

任何建议将受到欢迎。

+0

试试'print x,l'。括号使它成为一个元组,它不会以正确的格式打印。我不明白这会给你非零退出码。 – tom 2012-03-01 08:21:41

回答

0

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

if line == "\n": 
    break 
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()