Вопрос Кэттис «Цифры»: Почему мой первый набор кода превышает лимит времени, а второй — нет?Python

Программы на Python
Ответить
Anonymous
 Вопрос Кэттис «Цифры»: Почему мой первый набор кода превышает лимит времени, а второй — нет?

Сообщение Anonymous »

В настоящее время я решаю задачу на Kattis (https://open.kattis.com/problems/digits).
Описание задачи следующее:
Для любого числа x0 определите последовательность, используя следующую рекурсию xi+1 = количество цифр в десятичном представлении xi
Ваша задача — определить наименьшее положительное число i такое, что xi=xi-1.
Изначально я придумал код A, но после того, как код A не уложился в срок, я немного повозился с кодом, чтобы получить код B.
Пример ввода

Код: Выделить всё

42
5
END
Пример вывода Код А:

Код: Выделить всё

#time limit exceeded
def recurrence_index(prev):
counter = 1
while True:
current = len(str(prev))
if current == prev:
return counter
else:
counter += 1
prev = current

while True:
initial = input().strip()
if initial == 'END':
break
initial = int(initial)
print(recurrence_index(initial))
Код Б:

Код: Выделить всё

def recurrence_index(prev):
counter = 2
while True:
current = len(str(prev))
if current == prev:
return counter
else:
counter += 1
prev = current

while True:
initial = input().strip()
if initial == 'END':
break
l = len(initial)
if l == 1 and int(initial) == 1:
print(1)
else:
print(recurrence_index(l))
К сожалению, я не совсем понимаю, почему код B быстрее, чем код A. Кажется, я случайно пришел к правильному ответу. Если кто-нибудь может помочь объяснить, почему код B быстрее, чем код A, ваша помощь будет очень признательна. Спасибо!

Подробнее здесь: https://stackoverflow.com/questions/704 ... imit-but-m
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»