2014-09-09 3 views
0

Я получаю правильный ответ в 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 

ответ

6

n и r должны быть введены в одной и той же линии.

100 10 

Ваша программа ожидает, что они будут введены на двух отдельных линиях.

100 
10 
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 

Sample Run:

$ python fact.py 
1 
5 2 
10 

Надеется, что это помогает!

+0

Еще об ошибке: Traceback (самый последний вызов последнего): Файл "/tmp/editor_trsource_1410455624_65093.py", строка 16, в п = N [0] IndexError: индекс списка из диапазона –