@fakename

И снова: Как найти ошибку в коде Python?

Решил задачу, но код не проходит проверку(stepic.org). Что можно улучшить?
задача:
Имеется реализованная функция f(x), принимающая на вход целое число x.

Функция вычисляется достаточно долго, ничего не выводит на экран, не пишет в файлы и зависит только от переданного аргумента x.

Напишите программу, которой на вход в первой строке подаётся число n — количество значений x, для которых требуется узнать значение функции f(x), после чего сами эти n значений, каждое на отдельной строке. Программа должна после каждого введённого значения аргумента вывести соответствующие значения функции f на отдельной строке.

Для ускорения вычисления необходимо сохранять уже вычисленные значения функции при известных аргументах.

Обратите внимание, что в этой задаче установлено достаточно сильное ограничение в одну секунду по времени исполнения кода на тесте.

Sample Input:
5
5
12
9
20
12
Sample Output:
11
41
47
61
41
Memory Limit: 256 MB
Time Limit: 1 seconds
решение:
def fn():
    d={}
    n=int(input())
    x=0
    while x<n:
        a=int(input())
        if a in d:
            print(d[a])
        else:
            print(f(a))
            d[a]=f(a)
        x+=1
  • Вопрос задан
  • 3610 просмотров
Пригласить эксперта
Ответы на вопрос 3
tsarevfs
@tsarevfs
C++ developer
А почему вы `n` к int приводите, а `a` нет?

А к вопросу "как найти?" - написать какую-нибудь функцию f() например:
def f(a):
    return a + 1

def main():
    d = {}
    n = int(input())
    x = 0
    while x < n:
        a = input()
        if a in d:
            print(d[a])
        else:
            print(f(a))
            d[a] = f(a)
        x += 1

if __name__ == '__main__':
    main()

И запустить.
Ответ написан
@lega
Функция вычисляется достаточно долго...
Для ускорения вычисления необходимо сохранять уже вычисленные значения функции при известных аргументах.
А в коде ф-ия вызывается дважды:
print(f(a))
d[a]=f(a)
Ответ написан
kivsiak
@kivsiak
software engineer
Я вот смотрю уже не первый подобный вопрос. Вы понимаете что вы сами себе вредите ища вопросы на ответы учебных заданий?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы