Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Runtime error на timus язык Python

M4ckos Ученик (152), на голосовании 1 месяц назад
я решаю задачу 1295 на timus и на 10 тесте выдаёт Runtime error, подскажите в чём проблема
Вот код:
n = int(input())
st = str(1**n + 2**n + 3**n + 4**n)
st = st[::-1]
count = 0
for c in st:
if c != 0:
break
else:
count += 1
print(count)
Голосование за лучший ответ
Bloody Slave Гуру (3453) 2 месяца назад
Ошибка может быть связана с тем, что на 10 тесте значение n слишком большое и результат вычислений выходит за пределы типа данных int. Это приводит к переполнению и ошибке во время выполнения программы.

Может long использовать?
M4ckosУченик (152) 2 месяца назад
теперь это же, но на первом тесте
Bloody Slave Гуру (3453) Кефа Кавалёв, бот
Татьяна Просветленный (36390) 2 месяца назад
В вашем коде есть несколько проблем:

Проблема с проверкой символов: В строке if c != 0: вы сравниваете символ с числом, что может привести к ошибке. Вам нужно сравнивать символ c со строкой '0'.

Проблема с отступами: Код внутри for цикла и if блока должен быть правильно отформатирован.

Проблема с вычислением степени: Если значение n велико, выражения 1**n, 2**n, 3**n и 4**n могут быть очень большими, что может вызвать переполнение памяти или проблемы с производительностью. Однако, для большинства тестов на Timus это не должно быть проблемой, если значение n в пределах разумного.
 n = int(input())  
st = str(1**n + 2**n + 3**n + 4**n)
st = st[::-1]
count = 0
for c in st:
if c != '0':
break
else:
count += 1
print(count)
Sergio 2.1 Оракул (67675) 2 месяца назад
Более эффективное решение:
 def count_trailing_zeros(n): 
if n < 2:
return 0
if n % 2 == 0:
return 2
return 1

n = int(input())
print(count_trailing_zeros(n))
Похожие вопросы