2012-03-01 3 views
2

私はこの問題を解決しようとしていましたが、http://www.spoj.pl/problems/FACKT/で、非ゼロ終了コード(NZEC)が得られます。これを克服するためにコード内で何を変更するかを正確に把握するにはどうすればよいですか?NZECの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

答えて

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() 
関連する問題