我在IDE中得到了正确的答案,但在线裁判给出了以下错误:
Traceback (most recent call last):
File "/tmp/editor_trsource_1410281976_804149.py", line 10, in
n=int(raw_input(''))
ValueError: invalid literal for int() with base 10: '100 10'
问题链接:http://www.hackerearth.com/problem/golf/minimal-combinatorial/
def fact(x):
f=1
while x>0:
f=f*x
x-=1
return f
T=int(raw_input(''))
while T>0:
n=int(raw_input(''))
r=int(raw_input(''))
ans=fact(n)/(fact(r)*fact(n-r))
print str(ans) + "\n"
T-=1
答案 0 :(得分:6)
n
和r
将在同一行输入。
100 10
您的程序希望它们分两行输入。
100
10
答案 1 :(得分:0)
正如@John Kugelman已经指出的那样,你的程序希望n和r在同一条线上。最好使用sys模块读取输入。它会像这样工作:
import sys
def fact(x):
f=1
while x>0:
f=f*x
x-=1
return f
T=int(sys.stdin.readline().strip())
while T>0:
nr = map(int, sys.stdin.readline().strip().split())
#Or you can use nr directly while computing ans
n = nr[0]
r = nr[1]
ans=fact(n)/(fact(r)*fact(n-r))
print str(ans) + "\n"
T-=1
示例运行:
$ python fact.py
1
5 2
10
希望这有帮助!