2015-07-05 2 views
1

Я реализовал алгоритм поиска сумм строк Треугольника Паскаля, но он медленно подходит для конкурса. Моя программа прошла 4 тестовых примера, но в следующем случае не была выполнена ошибка времени выполнения. Могу ли я сделать свой код быстрее?Сумма строк треугольника Паскаля

import math 

n = int(input()) 

for i in range(n): 
    print int(math.pow(2, (int(input())-1))) 

Входной формат является первым строка содержит количество тестов T. Тогда тестовые случаи Т следуют:

2 
1 
3 

ответ

1

Math.pow работает с поплавками, так что раствор может быть неточным при больших экспоненты. Более того, для значений более 1023 он выбрасывает OverflowError.

Используйте вместо x ** y оператор или встроенный pow функция.

+0

Вау, спасибо, я прошел еще один тестовый пример, но у меня есть ошибки времени выполнения «Завершение из-за таймаута», как и раньше - (. –

+1

Затем вам следует реализовать некоторый метод быстрого ускорения (https: //en.wikipedia .org/wiki/Exponentiation_by_squaring), сохраняя все промежуточные результаты для эффективного ответа на следующие тестовые примеры. Я думаю, что 2k-ary метод подходит. – deniss

+0

Да, большое вам спасибо! –

Смежные вопросы