我试图解决这个问题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)
欢迎任何建议。
答案 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()