2012-03-01 60 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()