Дистанционная подготовка: Ошибка во время выполнения программы
Ошибка во время выполнения программы
от Андрей Глейх - Воскресенье 22 Декабрь 2013, 13:57
2928. Последовательность
  1705-1262 - ID

Вылетает с ошибкой на всех тестах.
Делаю как обычно на третьем Питоне.

На двух машинах провел по несколько десятков произвольных тестов - отрабатывается нормально.

Попробовал через онлайн интерпретатор - тоже отрабатывает на ура

В чем ошибка?
Re: Ошибка во время выполнения программы
от Антон Карабанов - Понедельник 23 Декабрь 2013, 03:20
  Судя по сообщению об ошибке

Traceback (most recent call last):
File "./001264", line 7, in
nums = [True for i in range(max_num + 1)]
File "./001264", line 7, in
nums = [True for i in range(max_num + 1)]
MemoryError

просто не хватает памяти. Попробуйте обойтись без списков/массивов, задача решается и без этих структур данных...
Re: Ошибка во время выполнения программы
от Peter Cherepanov - Вторник 24 Декабрь 2013, 09:09
  Эксперимент показывает,что у этой задачи стоят очень маленькие ограничения на память. Питон же, до памяти жаден. Сам интерпретатор занимает около 27M памяти. Предположим, что элемент списка имеет указатель, поле значения и поле аттрибутов. На 64-разрядной системе такой элемент займет 24 байта. А 0.3M элементов -- 7.5М. Получается, что для программы нужно не менее 35М памяти. А вся программа у меня прошла лишь на 38М.
$ (ulimit -v 34000; python3 2928.py)
Traceback (most recent call last):
  File "2928.py", line 4, in 
    nums = [True for i in range(max_num + 1)]
  File "2928.py", line 4, in 
    nums = [True for i in range(max_num + 1)]
MemoryError